2013-02-19 146 views
2

我在PHP中使用fsockopen()来做一些API请求。对于大多数的API工作正常,但是从http://geocoding.cloudmade.com/我得到以下(RAW)回应:为什么HTTP响应主体在开始处包含“2fb”?

HTTP/1.1 200 OK 
Server: nginx/0.6.35 
cache-control: no-cache 
Content-Type: application/json; charset=utf-8 
Date: Tue, 19 Feb 2013 11:08:05 GMT 
pragma: no-cache 
Transfer-Encoding: chunked 
Connection: close 

2fb 
{"found": 1, "bounds": [[52.48732, 13.42553], ... 
0 

我的问题是,“2FB”中的第一行和“0”在身体的最后一行呢不告诉我任何事情。如果我通过Firefox发送相同的请求,主体不包含“2fb”或“0”。因此,我猜它有一些意义。但是什么?

感谢提示!

+0

小提琴手说什么?你有没有考虑设置你的用户代理?还要考虑设置您的Content-Type和Accept-Encoding。 – 2013-02-19 11:15:55

+0

提琴手是个好主意,谢谢!服务器也向浏览器发送“2fb”和“0”。然而,浏览器显然知道如何处理它,只显示内容(IE在文本编辑器中打开文件)而没有这些行。 – BurninLeo 2013-02-19 11:22:00

回答

4

chunked transfer-coding,也由Transfer-Encoding: chunked响应报头中指示:

的分块编码修改一个消息的主体中,以 传递它为一系列块,每个具有其自己的尺寸指示器, 后跟一个包含实体标题字段的可选预告片。此 允许动态生成的内容与收件人必需的信息一起传送,以验证其已收到完整邮件的 。

2fb,后面跟\r\n,表示后面块(763字节)的大小。块大小0表示最后一个块。

+0

这是解决方案...非常感谢! – BurninLeo 2013-02-19 11:26:11

相关问题