使用python请求和urllib2澄清POST多部分请求

时间:2017-03-10 00:42:34

标签: python

我正在尝试在Python中提交多部分POST请求。我环顾四周,找到了两个变种:

我尝试了他们两个并且能够成功提交请求。 以下是两者的示例代码:

  1. ---------- --------------请求

    resp = requests.post(submiturl, files=multipart_form_data, headers=headers,timeout=5)
    

    其中multipart_form_data包含我的文件对象以及字符串参数

  2. ---------------的urllib2 ------------

    items.append(MultipartParam(name, value))
    fileObj = open(inputFile,'r')
    items.append(MultipartParam('file', filename=inputFile, fileobj=fileObj))
    res = urllib2.urlopen(request)
    
  3. 我的问题:

    1. 我应该使用哪一个?
    2. 如果我错了,请纠正我,但我已经看到,在使用urllib2提交时,我会得到响应代码的HTTPError,如500 。但是,使用"请求"它不会像500 那样抛出响应代码的HTTPError,而是我必须手动添加条件:

      Response.raise_for_status():
      

      或:

      resp.status_code != 200: raise Execption(...)
      

      这是正确的还是我遗失了什么?

    3. 谢谢!

1 个答案:

答案 0 :(得分:0)

Response.raise_for_status()引发4xx和5xx范围内的HTTP响应代码。 src非常清晰易读。

您可以获得成功请求的2xx响应,但您可能还需要考虑其他响应代码,例如重定向。