Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换从请求到urrlib的POST请求导致404错误_Python_Python Requests_Urllib - Fatal编程技术网

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)。