2

全て、

私の要件はかなり単純です。IP:ポートの組み合わせに対して単純な HTTP POST を実行する必要があります。私はそれを行うために簡単なソケットプログラミングを使用しました.私は彼らに私の要求を送信することに成功し、彼らからの応答も得ました. 唯一の問題は、応答が常に HTTP 400: Bad Request の後に HTTP POST メッセージが続くことです。問題がクライアントにあるのかサーバーにあるのかわかりません。私の唯一の推測は、送信しているデータに問題がある可能性があるということです。これは私のPOSTがどのように見えるかです

POST /<Server Tag> HTTP/5.1
Content-Length: xxx


--Content--

サーバーからの応答は次のようになります

HTTP/1.1 400 Bad Request
Content-Length: xxx

--Same content that I sent them--

ここにサーバーのIPを入力できるかどうかわからなかったので、使用し続けました。サーバーから何らかの応答が返され、接続に自信があるので、問題はないと確信しています。誰かが私を助けることができますか?

PS: 私の POST に関するいくつかの指針:

1) HTTP 5.1 がサーバーによって要求されましたが、それが正しいかどうかわかりません
2) コンテンツの長さの後の行スペースの数をいじりました。私は1行と2行を与えてみました。それが違いを生むかどうかはわかりません。Wireshark では、行スペースの数に違いが見られますが、行スペースが 1 つの場合はプロトコルが TCP として指定されますが、2 つの場合は HTTP に変更されます。応答は常に HTTP プロトコルで受信されます。違いに関するいくつかの説明も役立ちます

ありがとう

編集:私を混乱させるもう1つのことは、応答にHTTP 1.1があり、私が送信した5.1ではないことです。また、投稿を 1.1 に変更しようとしましたが、成功しませんでした

edit2: 提案フォーム fvu などに基づいて、WebClient を使用してリクエストをアップロードしました。それでも 400 が返ってきました。WebClient によって生成されたヘッダーは次のようになります。

POST <server tag> HTTP/1.1
Host: <IP:PORT>
Content-Length: 484
Expect: 100-continue
Connection: Keep-Alive

これで発生する問題は、サーバーがヘッダー内のすべての詳細を予期していなかったことである可能性があります。サーバーは私たちからのみを要求しContent-Lengthました。それは問題になるでしょうか?ありがとう

4

2 に答える 2

0
  1. HTTP/5.1 が間違っているか、サーバー アプリケーションのプログラマによって誤用されている

  2. 最初にプロトコルの実装を確認するには、サーバー API から有効な例を取得する必要があります。

于 2013-07-29T15:27:43.890 に答える