POSTデータの送り方 – プログラミング – Home

通知
すべてクリア

[解決済] POSTデータの送り方


田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

VisualCでHTMLクライアントを作っています。
GETはうまくいったのですがPOSTでデータがうまく送れていないようなので質問です。

wsprintf(szBuffer,POST /test.asp HTTP/1.0\nContent-Length: 12\n\npostdata=10
\n\n);

というデータを送っています。
応答としてはHTTP OKが帰ってきますが、POSTで送っている数値が反映されません。

受信ページのtset.aspの中身は

<html>
<head>
<title>テストプログラム</title>
</head>
<body>
<%
Dim getdata
Dim postdata
getdata=Request.QueryString(getdata)
postdata=Request.Form(postdata)
Response.Write(Getデータ= & getdata & <br />)
Response.Write(Postデータ= & postdata & <br />)
%>
<form method=post name=form1 action=test.asp>
<input type=text name=postdata ><br />
<input type=submit name=submit >
</form>
</body>
</html>

というページを作っています。
送っているデータが悪いと思いますが他に何か原因があるのでしょうか?


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

これが原因かは分かりませんが、気になる点があります。

・HTTPにおいて、改行は\r\nです。
・POSTデータに改行そのものを含めることはできません。
 送りたいデータが10なら、末尾の\n\nは不要です。
 送りたいデータが10\n\nなら、データ部をエンコードし
10%13%13としなければなりません。


返信引用
田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

分かりやすいように以下のように変えました。

szBuffer[0]='\0';
strcat(szBuffer,POST /test.asp HTTP/1.0\r\n);
strcat(szBuffer,Content-Length: 11\r\n);
strcat(szBuffer,\r\n);
strcat(szBuffer,postdata=10);

これでデータを送りましたが、思った動作ではありません。
以前の症状とあまり変わりません。
フォームのpostdataを¥DS\HTML HTMLが帰ってきます。

やはり送ってるデータか悪いのでしょうか・・・


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

Content-Type: application/x-www-form-urlencoded
を追加してみてはどうでしょうか。


返信引用
田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

仕事で返事遅くなりました。
YuOさんのアドバイスよりContent-Typeを付加するとうまくいきました。
最終的なコードは以下のようになりました。

szBuffer[0]='\0';
strcat(szBuffer,POST /test.asp HTTP/1.0\r\n);
strcat(szBuffer,Content-Type: application/x-www-form-urlencoded\r\n);
strcat(szBuffer,Content-Length: 11\r\n);
strcat(szBuffer,\r\n);
strcat(szBuffer,postdata=10);

皆様ありがとうございました。


返信引用
田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

解決済みをチェックしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました