Python 替换从请求到urrlib的POST请求导致404错误
我有一个代码,可以用Python 替换从请求到urrlib的POST请求导致404错误,python,python-requests,urllib,Python,Python Requests,Urllib,我有一个代码,可以用这样的请求打开门 from requests import post as req\u post HEADER={“Authorization”:持有者097…}一些私人号码 访问链接=https://api.akerun.com/v5/organizations/.../jobs/unlock #一些私人链接 x=请求发布(访问链接,标题=标题) 打印(x.header) 将打开门,用一些私人数据回答类似的问题 {'Date':'Tue,06 Oct 2020 01:14
这样的请求打开门
from requests import post as req\u post
HEADER={“Authorization”:持有者097…}一些私人号码
访问链接=https://api.akerun.com/v5/organizations/.../jobs/unlock #一些私人链接
x=请求发布(访问链接,标题=标题)
打印(x.header)
将打开门,用一些私人数据回答类似的问题
{'Date':'Tue,06 Oct 2020 01:14:15 GMT','Content Type':'application/json','Content Length':'23','Connection':'keep alive','Server':'nginx','Strict Transport Security':'max age=31536000','ETag':…Cache Control':'max age=0,private,必须重新验证','Set Cookie:…,'X-Runtime':'0.185443'}
所以当我对urllib
这样做的时候
a=”https://api.akerun.com/v5/organizations/.../jobs/unlock"
b={“授权”:“持有人097…”
从urllib导入请求,解析
请求(a,标题=b)
resp=request.urlopen(请求)
它抛出了一个错误
回溯(最近一次呼叫最后一次):
文件“/home/suomi/kaoiro/kaoiro/test.py”,第10行,在
resp=request.urlopen(请求)
urlopen中的文件“/usr/lib/python3.8/urllib/request.py”,第222行
返回opener.open(url、数据、超时)
打开文件“/usr/lib/python3.8/urllib/request.py”,第531行
响应=方法(请求,响应)
http_响应中的文件“/usr/lib/python3.8/urllib/request.py”,第640行
响应=self.parent.error(
文件“/usr/lib/python3.8/urllib/request.py”,第569行出错
返回自我。调用链(*args)
文件“/usr/lib/python3.8/urllib/request.py”,第502行,在调用链中
结果=func(*args)
文件“/usr/lib/python3.8/urllib/request.py”,第649行,默认为http\u error\u
raise HTTPError(请求完整的url、代码、消息、hdrs、fp)
urllib.error.HTTPError:HTTP错误404:未找到
为什么?requests
请求与urllib
请求不同吗?问题很可能是在您的情况下,urllib
执行GET而不是POST请求
从:
class urllib.request.request(url,data=None,headers={},origin\u req\u host=None,unverifiable=False,method=None)
方法应该是一个字符串,指示将使用的HTTP请求方法(例如,'HEAD'
)。如果提供,其值存储在方法
属性中,并由获取方法()使用
。如果数据为None
或'POST'
,则默认为'GET'
。子类可以通过在类本身中设置方法
属性来指示不同的默认方法
所以使用
req = request.Request(a, headers=b, method='POST')
应该可以工作。我想这是因为urllib
在不提供data
参数的情况下发出GET请求(请参阅)。但是响应有点奇怪(我希望是405)。