找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2819|回复: 1

[已回复] 如何区分服务器传回response的头部和数据部分

2

主题

2

帖子

2

积分

贫民

积分
2
aes3219563 发表于 2017-4-15 03:54:07 | 显示全部楼层 |阅读模式
使用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.
跪求大佬指点,拜谢
回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2017-4-17 20:20:21 | 显示全部楼层
那说明:本身就没有\r\n\r\n 字符, 你可以多找几个例子看看,验证一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表