2012-07-30 35 views
0

我使用我自己的HTTP封装器使用套接字。到目前为止,除了multipart/form-data POST之外,所有工作都可以使用当我将数据发送到服务器时,它根本没有响应,所以我猜测我在POST中丢失了一些东西,比如我需要“\ r \ n \ r \ n”来处理常规请求。multipart/form-data +套接字=服务器没有响应

这是我的要求:

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

您的边界不符合boundary = 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-- 
+0

谢谢,我更新了与身体相匹配的边界,但仍然会发生同样的情况,除了最后一个有附加内容外,我的所有边界都是匹配的 - 最后..任何想法? – user1192403 2012-07-30 13:29:57

+0

您必须添加一个附加项 - 在边界开始的任何地方使用(除了声明)。从w3.org网站查看示例。 – AlexDev 2012-07-30 13:46:41

+0

非常感谢你,这工作,从来没有想过一个出来.. :) – user1192403 2012-07-30 13:52:12

2

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

内容类型字段,多实体需要一个参数, “边界”。然后将边界定界符线定义为完全由两个连字符(“ - ”,十进制值45) 后跟来自Content-Type标头 字段的边界参数值的行 字段,可选线性空白和终止CRLF 。

所以我想这应该工作:

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

--54472172614771 
Your data 
--54472172614771-- 

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

+0

啊,真正可以是一个荒谬的协议。 – 2012-07-30 13:09:33

+0

@詹姆斯麦克劳林哈哈,这是为什么呢? – CodeCaster 2012-07-30 13:11:55

+0

我觉得边界的东西很荒谬。为什么不只是首先发送长度,以便接收器可以假设下一个X字节是数据? – 2012-07-30 13:13:30

相关问题