将pythonrestapi身份验证脚本转换为curl命令

2024-09-27 21:30:01 发布

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

我用下面的python脚本成功地对REST API进行了身份验证:

import requests, base64
import json

VendorId = "a"
VendorPassword = "b"
UserId = "c"
UserPassword = "d"
PropertyId = "e"
authurl = "https://url/api/auth"
usrPass = '' + VendorId + ":" + VendorPassword

b64Val = base64.b64encode(usrPass)
payload = { "UserId" : UserId, "UserPassword" : UserPassword, "PropertyId" : PropertyId}
r = requests.post(authurl, headers = {"Authorization":b64Val}, data = payload)

我想通过卷曲来完成(完全没有经验)。到目前为止,我发现的是:

^{pr2}$

但是我从restapi得到了下面的502错误。。。在

如果不使用标头,则会出现以下错误:

< X-SERVICENAME-Auth-Error: Missing vendor credentials in HTTP auth header

我只想了解一下我在这里遗漏了什么,头语法是错误的,还是curl参数放错地方了?在

提前感谢您的任何想法/指导/建议!在


Tags: import脚本auth错误requestspayloaduseridbase64
2条回答

您已经用python解决了这个问题,并编写了一个脚本来生成一个成功的请求。我肯定会从那里开始。由于您只需要一个请求,因此比较它们的输出就足以满足诸如HTTP之类的普通协议的需要。在

尝试修改上面的脚本以请求127.0.0.1和一些任意端口,如下所示。根据您的首选工具进行调整:

ncat  recv-only -l 8080 > desired &
ncat  recv-only -l 8081 > in_question &
python your_desired_auth_script.py 127.0.0.1 8080
curl 127.0.0.1:8081/api/auth "parameters not resulting in authorization..."
vimdiff desired in_question

只需修改python脚本以接受主机和端口参数或硬编码它们。不要忘记请求路径。如果您不能立即发现错误,请在阅读文档的同时使用curl重新构建准确的请求。在成功之后,你可以逐渐地偏离,直到你发现是什么差异导致了它。在

标题设置错误,它将是:

-H "Authorization: abCdEfgHijKlmnop=="

另外,如果你有授权用户:密码您可以使用:

^{pr2}$

相关问题 更多 >

    热门问题