私はPOSTとGETでC#で作業しましたが、Cで実装しようとするとちょっと混乱しています。Cプログラミング - Http POSTでパラメータを要求する
ローカルマシンの8443ポートを使用してソケットに正常に接続しました。
今、私は127.0.0.1:8443/xxxx/xxxAPI
URLに3つのパラメータでPOSTリクエストを送信しようとしています。
通常、GETでは自分のURLにクエリ文字列を付けることができますが、POSTではメッセージ本文、contentHeader、Typeなどが必要です。
私はサーバーに接続するのに役立つカスタムTCPコードをCに用意しています。成功した接続の後、私は次の擬似コードのようなことをしようとしています....しかし、明らかに私は何をしているのかわかりません...誰も私を導くことができますか?
sprintf(szBuff, "POST /xxxx/xxxxxxAPI HTTP/1.1\r\n");
sprintf(contentHeader, "Content-Length: %d\r\n", 20);
send(iSock, szBuff, strlen(szBuff), 0);
send(iSock, "Accept: */*\r\n", 15, 0);
send(iSock, "User-Agent: Mozilla/4.0\r\n", 27, 0);
send(iSock, contentHeader, strlen(contentHeader), 0);
send(iSock, "Accept-Language: en-us\r\n", 26, 0);
send(iSock, "Accept-Encoding: gzip, deflate\r\n", 34, 0);
send(iSock, "Host: ", 6, 0);
send(iSock, "hostname", 8, 0);
send(iSock, "\r\n", 4, 0);
send(iSock, "Content-Type: application/x-www-form-urlencoded\r\n", 50, 0);
send(iSock, "\r\n", 4, 0);
send(iSock, "\r\n", 4, 0);
send(iSock, parameters, strlen(parameters), 0);
send(iSock, "\r\n", 4, 0);
/*if (write(iSock, szBuff, sizeof(szBuff)) == -1)
LogToFile("Error while request being sent to the server");*/
「(0)ながら{...}行います。 '??? –
残念ですが、コードに表示されていないことを確認するエラーの一部です...混乱を避けるために削除しました – Philo
これらのハードコードされた長さは悪い考えです。そしてそれらのいくつかは間違っています。 '' \ r \ n "'は2文字の文字列であり、4ではなく文字列です。また、Content-Typeの後に3つの連続した '\ r \ n 'ペアを送信します。 'fdopen'を使いたいだけではないですか? –