Python'请求'模块中的POST请求无法正常工作

ano*_*428 4 python http-post python-requests

POST https://maxcvservices.dnb.com/rest/Authentication
x-dnb-user: MyUsername
x-dnb-pwd: MyPassword
Run Code Online (Sandbox Code Playgroud)

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

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

我得到的回应是 Response [500]

并且回复的内容是: error processing request\r\n

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

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

{'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'}
Run Code Online (Sandbox Code Playgroud)

我使用时的响应标题:

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

随机用户ID和密码.

但根据我应该收到的API <Response [401]>.我收到了<Response [500]>.

Mar*_*ers 5

这些是HTTP标头; 引用API文档:

通过使用身份验证令牌来管理对D&B Direct服务的安全访问,可以通过向身份验证服务URL发送HTTP POST请求,在HTTP头中传递有效的用户名和密码来获取身份验证令牌.

添加它们如下:

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

这对我有用,虽然我收到了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'
Run Code Online (Sandbox Code Playgroud)

完全如文件所述.