【发布时间】:2017-03-11 02:39:13
【问题描述】:
我正在尝试在 Python 中提交多部分 POST 请求。我环顾四周,发现了 2 个变体:
- 使用“请求”(http://docs.python-requests.org/en/latest/)
- 使用 urllib2 (https://docs.python.org/2/library/urllib2.html#module-urllib2)
我尝试了这两个并且能够成功提交请求。 以下是两者的示例代码:
-
---------请求--------------
resp = requests.post(submiturl, files=multipart_form_data, headers=headers,timeout=5)其中 multipart_form_data 包含我的文件对象以及字符串参数
-
---------------urllib2------------
items.append(MultipartParam(name, value)) fileObj = open(inputFile,'r') items.append(MultipartParam('file', filename=inputFile, fileobj=fileObj)) res = urllib2.urlopen(request)
我的问题:
- 我应该使用哪一个?
-
如果我错了,请纠正我,但我发现在提交 使用 urllib2 时,我得到了响应代码的 HTTPError,例如 500。但是,在使用“请求”时,它不会针对 500 秒之类的响应代码抛出 HTTPError,而是我必须手动添加条件:
Response.raise_for_status():或:
resp.status_code != 200: raise Execption(...)这是正确的还是我遗漏了什么?
谢谢!
【问题讨论】:
-
这是一个基于意见的问题,但 requests 是目前最常用的 Python 库之一。 raise_for_status 事情让您有机会检查 HTTP 响应并在适当时重试,这通常是。
-
@cbare。
Response.raise_for_status()除了状态码 200 之外,它会引发错误吗?另外,你能确认 urllib2 在除 200 之外的所有场景中都会抛出 HTTPError 吗?如果是这种情况,那么我可以使用 urllib2 而不是使用“请求”并添加 Response.raise_for_status()
标签: python