0

我正在使用我自己的使用套接字的 HTTP 包装器。到目前为止,除了 multipart/form-data POST 之外一切正常。当我将数据发送到服务器时,它根本没有响应,所以我猜我在我的 POST 中遗漏了一些东西,就像我需要 "\r\n\r\n" 来处理常规请求。

这是我的要求:

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

您的边界与边界 = 部分上声明的边界不匹配。

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 - 多用途 Internet 邮件扩展 (MIME) 第二部分:媒体类型

多部分实体的 Content-Type 字段需要一个参数,“boundary”。然后,边界分隔符行被定义为完全由两个连字符(“-”,十进制值 45)组成的行,后跟来自 Content-Type 标头字段的边界参数值、可选的线性空格和终止 CRLF。

所以我想这应该可行:

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

--54472172614771
Your data
--54472172614771--

请注意,在 Content-Type 标头的边界参数中指定的边界应与您在有效负载中使用的边界相匹配。另请注意,边界也计入内容长度。

于 2012-07-30T13:00:29.687 回答