4
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 请求的方式,因为 API 以单独的错误 401 响应错误的用户 ID,通过。

{'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]>了。

4

1 回答 1

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

这对我有用,尽管我收到了 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'

完全按照记录。

于 2013-10-26T17:31:07.247 回答