python-2.7 - Urllib2 响应 .read() 为空,即使响应不是

标签 python-2.7 urllib2

我正在使用 urllib2 发出一个简单的 HTTPS 请求,并进行基本身份验证,如下所示:

req = urllib2.Request("https://myurl")
req.add_header("Authorization", "Basic {0}".format(auth_token))
resp = urllib2.urlopen(req)
content = json.loads(resp.read())

我收到 200 响应,但 body 始终是空字符串,即使我多次调用 resp.read() 也是如此。似乎这是一个服务器问题,但我确认内容长度 header 非零,然后甚至在 Fiddler 中捕获请求并验证响应非空并且包含我期望的 JSON。我尝试过 readline 和 readlines ,结果相似。如果我故意修改我的身份验证 token ,则响应将是 401,所以我认为这不是问题所在。

有什么理论可以解释为什么会这样,或者进一步调试的技巧吗?

最佳答案

好吧,我可以通过将最后一行分成两行来修复它:

resp_body = resp.read()
content = json.loads(resp.read())

可以通过在两者之间来回切换来一致地重现/修复问题。除非我误解了一些基本的东西,否则这一定是 Python 2.7.3 中的一个错误。

关于python-2.7 - Urllib2 响应 .read() 为空,即使响应不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735836/

相关文章:

python - urllib2数据发送

python - 如何使用 json 文件使用 url lib

python - 如何强制 pip 安装最新版本的 django?

user-interface - 如何在 tkinter python gui 中用鼠标选择多个对象?

python - 如何正确向Django的用户模型添加权限?

python : run multiple queries in parallel and get the first finished

python urllib2 下载大小

python - 如何为 python 2.7.x 创建虚拟环境?

python - 是否有在 cygwin 上安装 Kivy 的说明?

Python:如何处理 urllib2 中服务器抛出的异常?