【问题标题】:Urllib2 response .read() is empty even though response is notUrllib2 响应 .read() 为空,即使响应不是
【发布时间】:2016-09-27 23:30:41
【问题描述】:

我正在使用 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()。似乎这将是一个服务器问题,但我确认 content-length 标头不为零,然后甚至在 Fiddler 中捕获了请求并验证响应不是空的并且包含我希望在那里的 JSON。我试过readline 和readlines 得到类似的结果。如果我故意使用我的身份验证令牌,则响应是 401,所以我认为这不是问题。

关于为什么会这样的任何理论,或进一步调试的提示?

【问题讨论】:

    标签: python-2.7 urllib2


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2023-04-07
      • 2020-04-26
      • 1970-01-01
      • 2012-10-24
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多