Python:请求补丁方法不起作用



我有下面的代码,它工作正常并带回我需要的东西

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

最新更新