Python“requests”模块中的POST请求无法正常工作

2024-06-02 20:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

POST https://maxcvservices.dnb.com/rest/Authentication
x-dnb-user: MyUsername
x-dnb-pwd: MyPassword

是D&B API的文档,因此我尝试使用以下代码行使用python请求模块发送POST请求:

r = requests.post('https://maxcvservices.dnb.com/rest/Authentication',params={'x-dnb-user':userid,'x-dnb-pwd':pass})

我得到的响应是Response [500]

响应的内容是:error processing request\r\n

我的问题是,在传递post请求和参数时,我是做错了什么,还是用户名和密码无效?

我觉得问题在于我传递POST请求的方式,因为API用一个单独的错误401响应错误的用户id pass。

{'connection': 'Keep-Alive',
 'content-encoding': 'gzip',
 'content-length': '46',
 'content-type': 'text/plain',
 'date': 'Sat, 26 Oct 2013 17:43:22 GMT',
 'server': '',
 'vary': 'Accept-Encoding',
 'x-correlationid': 'Id-d4c07ad3526bff3a03fb742e 0'}

我使用时的响应标题:

r = requests.post('https://maxcvservices.dnb.com/rest/Authentication', headers={'x-dnb-user': 'userid', 'x-dnb-pwd': 'password'})

随机的用户id和密码。

但根据API,我应该接收<Response [401]>。 我收到的是<Response [500]>


Tags: httpscomrestapiauthenticationresponseservicepwd
1条回答
网友
1楼 · 发布于 2024-06-02 20:42:10

这些是HTTP头;引用API documentation

Secure access to D&B Direct services is managed through the use of an Authentication Token, which can be obtained by sending an HTTP POST request to Authentication Service URL, passing a valid username and password in the HTTP header.

添加它们:

r = requests.post(
    'https://maxcvservices.dnb.com/rest/Authentication',
    headers={'x-dnb-user': userid, 'x-dnb-pwd': password})

这对我有效,尽管我得到了401的回复(因为我没有任何有效的凭证):

>>> import requests
>>> requests.__version__
'2.0.0'
>>> r = requests.post('https://maxcvservices.dnb.com/rest/Authentication',
...                   headers={'x-dnb-user': 'userid', 'x-dnb-pwd': 'password'})
>>> r
<Response [401]>
>>> r.headers['authorization']
'INVALID CREDENTIALS'

完全如文件所述。

相关问题 更多 >