multipart / form-data + Sockets =服务器无响应

时间:2012-07-30 12:55:14

标签: c# http sockets post

我正在使用自己的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--

当我发送数据时,连接是打开的,就像它在服务器上等待一样,但是服务器没有响应。有什么想法我在这里缺少什么?感谢

2 个答案:

答案 0 :(得分:2)

您的边界与border = part上声明的边界不匹配。

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--

答案 1 :(得分:2)

  

RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types

     

多部分实体的Content-Type字段需要一个参数,      "边界&#34 ;.然后将边界定界线定义为线      完全由两个连字符组成(" - ",十进制值45)      后跟Content-Type标头的边界参数值      字段,可选的线性空格和终止CRLF。

所以我想这应该有效:

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

--54472172614771
Your data
--54472172614771--

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