|
使用socket.recv完整的收取了服务器的response,是str格式,如下所示,数据部分使用了gzip压缩
********************
'HTTP/1.1 200 OK\r\nContent-Type: application/octet-stream\r\nContent-Length: 17163\r\nConnection: keep-alive\r\nAccess-Control-Allow-Headers: Content-Type\r\nAccess-Control-Allow-Origin: *\r\nCache-Control: private\r\nContent-Encoding: gzip\r\nDate: Wed, 12 Apr 2017 19:35:53 GMT\r\nServer: Microsoft-IIS/8.5\r\nVary: Accept-Encoding\r\nX-AspNet-Version: 4.0.30319\r\nX-Powered-By: ASP.NET\r\nX-Cache: Miss from cloudfront\r\nVia: 1.1 eb832db768f566df45ffb9e4623815da.cloudfront.net (CloudFront)\r\nX-Amz-Cf-Id: C60K2mEC8apoWVUuzU7I6dzAiqvHTA20z0zYIVxyNLTCDI5KkJacEg==\r\n\r\n\x1f\x8b\x08\x00\x00\x00\x00\x00\x04\x00\xed\xbd\x07`\x1cI\x96%&/m\xca{\x7fJ\xf5J\xd7\xe0t\xa1\x08\x80`\x13$\xd8\x90@\x10\xec\xc1\x88\xcd\xe6\x92\xec\x1diG#)\xab*\x81\xcaeVe]f\x16@\xcc\xed\x9d\xbc\xf7\xde{\xef\xbd\xf7\xde{\xef\xbd\xf7\xba;\x9dN\'\xf7\xdf\xff?\\fd\x01l\xf6\xceJ\xda\xc9\x9e!\x80\xaa\xc8\x1f?~|\x1f?"\x1e?\xc9\xda\xb6\xcc_\xe7\xf5e1\xcd\x8f\x1e\x9f\xd4y...下略
********************
开始使用response.split("\r\n\r\n")[1]来获得gzip数据。发现如果response数据量比较小,可以正确获得。如果数据量比较大(150kb左右)就无法定位"\r\n\r\n"的位置了。使用response.index("\r\n\r\n")会抛出异常,使用response.find("\r\n\r\n")也会返回-1。将找不到"\r\n\r\n"的数据通过 print repr(response)打印出来,可以清晰的看到"\r\n\r\n"确实在那里。我的python 版本是2.7.13.
跪求大佬指点,拜谢
|
|