我正在使用 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/