curl向一个网站post数据时,可以得到相应的响应头(header)和响应体(body),响应体的传输编码(Transfer-Encoding)是区块格式(chunked)。怎么得到http区块应答(HTTP chunked response)中的数据大小(Chunk size)?
curl向一个网站post数据时,可以得到相应的响应头(header)和响应体(body),响应体的传输编码(Transfer-Encoding)是区块格式(chunked)。怎么得到http区块应答(HTTP chunked response)中的数据大小(Chunk size)?
你看看
http://topic.csdn.net/u/20110109/18/5f164cba-5b24-4497-96de-1a0f06ba84ab.html
我的回帖,有代码的。
一段数据\r\n
一个16进制的长度\r\n
一段数据\r\n
一个16进制的长度\r\n
一段数据\r\n
0\r\n
\r\ncurl已经把这些数据解开串到一起了,你自己解析就是先找第一个\r\n\r\n,后面就是body,然后顺次找\r\n得到一个长度,然后往后读这么长的数据,然后掠过\r\n。循环这个过程,一直到遇到长度0就不用再解析了。实际整个body的长度可以curl这样做:
CURLINFO_SIZE_DOWNLOAD - Total number of bytes downloaded
URLINFO_HEADER_SIZE - Total size of all headers receivedmixed curl_getinfo ( resource $ch [, int $opt = 0 ] )
用这个函数得到这俩值,相减就是原始response里的总body长度,而真正数据穿起来多长就是returntransfer的数据长度了。