0

ソケットを使用して独自の HTTP ラッパーを使用しています。これまでのところ、multipart/form-data POST 以外はすべて動作します。データをサーバーに送信しても、単に応答しないため、通常のリクエストで「\r\n\r\n」が必要になるように、POST に何かが欠けていると推測しています。

これは私の要求です:

POST /getproxies/get.php HTTP/1.1
Host: myhost.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Cookie: sid=UtozR43zQQAtVA2Np0KP_ZLnO0IYwwU1S_Tt4Z3N80wctL; 
Connection: Close
Content-Type: multipart/form-data; boundary=---------------------------4664151417711
Content-Length: 411

---------------------------4664151417711
Content-Disposition: form-data; name="proxy_count"

20 proxies
---------------------------4664151417711
Content-Disposition: form-data; name="u"

13
---------------------------4664151417711
Content-Disposition: form-data; name="opt_1"


---------------------------4664151417711
Content-Disposition: form-data; name="opt_2"

GET
---------------------------4664151417711--

データを送信すると、サーバーで待機しているように接続が開いていますが、サーバーは応答しません。ここで何が欠けているのですか?ありがとう

4

2 に答える 2

2

あなたの境界は、boundary= 部分で宣言されたものと一致しません。

Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x
Content-Disposition: form-data; name="submit-name"

Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--AaB03x--
于 2012-07-30T12:59:38.093 に答える
2

RFC 2046 - 多目的インターネット メール拡張 (MIME) パート 2: メディア タイプ:

マルチパート エンティティの Content-Type フィールドには、「境界」という 1 つのパラメータが必要です。次に、境界区切り行は、完全に 2 つのハイフン文字 (「-」、10 進値 45) と、その後に続く Content-Type ヘッダー フィールドの境界パラメーター値、オプションの線形空白、および終了 CRLF で構成される行として定義されます。

だから私はこれがうまくいくはずだと思います:

Content-Type: multipart/form-data; boundary=54472172614771
Content-Length: 47

--54472172614771
Your data
--54472172614771--

Content-Type ヘッダーの境界パラメーターで指定された境界は、ペイロードで使用する境界と一致する必要があることに注意してください。また、境界も Content-Length にカウントされることに注意してください。

于 2012-07-30T13:00:29.687 に答える