我有下面的代码,它工作正常并带回我需要的东西
import requests
from requests.auth import HTTPBasicAuth
response = requests.get('https://example/answers/331', auth=HTTPBasicAuth('username', 'password'),json={"solution": "12345"})
print response.content
但是,当我将其更改为服务器接受的patch
方法时,出现以下错误。知道为什么吗?
Traceback (most recent call last):
File "auth.py", line 8, in <module>
response = requests.patch('https://example/answers/331', auth=HTTPBasicAuth('username', 'password'),json={"solution": "12345"})
File "C:Python27libsite-packagesrequests-2.12.0-py2.7.eggrequestsapi.py", line 138, in patch
return request('patch', url, data=data, **kwargs)
File "C:Python27libsite-packagesrequests-2.12.0-py2.7.eggrequestsapi.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "C:Python27libsite-packagesrequests-2.12.0-py2.7.eggrequestssessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "C:Python27libsite-packagesrequests-2.12.0-py2.7.eggrequestssessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "C:Python27libsite-packagesrequests-2.12.0-py2.7.eggrequestsadapters.py", line 473, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",))
谢谢
尝试使用具有以下标头的 POST 请求:X-HTTP-Method-Override:PATCH这是 Oracle Service Cloud REST API 实现所独有的,并已记录在案。
在浏览器或客户端应用程序不支持 PATCH 请求或网络中介阻止 PATCH 请求的情况下,可以通过提供 X-HTTP-Method-Override 标头将 HTTP 隧道与 POST 请求一起使用。
例:
import requests
restURL = <Your REST URL>
params = {'field': 'val'}
headers = {'X-HTTP-Method-Override':'PATCH'}
try:
resp = requests.post(restURL, json=params, auth=('<uname>', '<pwd>'), headers=headers)
print resp
except requests.exceptions.RequestException as err:
errMsg = "Error: %s" % err
print errMsg