python http客户端模块错误/不一致

时间:2017-09-22 08:03:05

标签: python python-3.x

我收到以下输出

  

301永久移动---使用http.client时

     

200 ---使用请求时

网址处理“http://i.imgur.com/fyxDric.jpg”作为arg通过命令

传递

我的期望是给我200状态好的回复。

这是身体

  if scheme == 'http':
       print('Ruuning in the http')
       conn = http.client.HTTPConnection("www.i.imgur.com")
       conn.request("GET", urlparse(url).path)
       conn_resp = conn.getresponse()
       body = conn_resp.read()
       print(conn_resp.status, conn_resp.reason, body)

使用请求时

  headers = {'User-Agent': 'Mozilla/5.0 Chrome/54.0.2840.71 Safari/537.36'}
  response = requests.get(url, allow_redirects=False)
  print(response.status_code)            

2 个答案:

答案 0 :(得分:2)

http模块上的文档在其第一句中包含“通常不直接使用”。与requests不同,它不会对301响应执行操作并遵循标头中的重定向。它会返回301,您必须自己处理。

答案 1 :(得分:2)

您正试图点击http,但imgur将其所有请求重定向到https处理。

由于此重定向,问题正在发生。

http模块本身并不处理重定向所需的重定向,而requests模块自己处理这些重定向。