当同一个帖子在Postman中正常工作时,如何排除Python请求帖子失败的故障?
我继续从python请求中得到一条非常通用、毫无帮助的错误消息,当我发出POST请求时,它在Postman中运行良好 无论我尝试什么,我都会继续收到两条错误消息中的一条。请注意,调用python脚本没有第155行,负载也不包含字母“u”: 在Postman中,正确解释参数,然后将其附加到url,例如:当同一个帖子在Postman中正常工作时,如何排除Python请求帖子失败的故障?,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我继续从python请求中得到一条非常通用、毫无帮助的错误消息,当我发出POST请求时,它在Postman中运行良好 无论我尝试什么,我都会继续收到两条错误消息中的一条。请注意,调用python脚本没有第155行,负载也不包含字母“u”: 在Postman中,正确解释参数,然后将其附加到url,例如: https://areallylongurl?params={"catalogItem": "Req Name"} 在Python请求中我尝试了各种各样的组合,但运气不佳 payload = {
https://areallylongurl?params={"catalogItem": "Req Name"}
在Python请求中我尝试了各种各样的组合,但运气不佳
payload = {"params": '{"catalogItem": "Req Name"}'}
response = requests.post(url, headers=headers, json=payload, verify=False)
response = requests.post(url, headers=headers, json=json.dumps(payload), verify=False)
response = requests.post(url, headers=headers, data=payload, verify=False)
response = requests.post(url, headers=headers, data=json.dumps(payload), verify=False)
到年,我能够进一步分析请求库如何解释我提供的有效负载,但我仍然不确定究竟如何解释这个通用错误消息,或者原因可能是什么
有没有人想到潜在的问题可能是什么?请注意,我可以从这个API获得请求而不产生问题,只有帖子有问题。因为在postman中,参数是“附加到url”的,就像
https://areallylongurl?params={“catalogItem”:“请求名称”}
,,这意味着该请求可能是一个GET请求,其中JSON作为值传递给params
参数,而不是POST请求的有效负载,在这种情况下,您应该这样做:
response = requests.get(url, headers=headers, params={"params": json.dumps(payload)}, verify=False)
究竟是什么产生了这些JSONic错误消息?这就是响应,还是另一个程序调用使用请求的脚本?哇!这解决了我的问题,您为我节省了无数个小时的故障排除时间,因此我非常感谢您。但是你介意详细说明一下你是如何解决这个问题的吗?是什么让你知道这是问题/解决方案?另外,您的代码片段正在使用
get
方法,但同样的方法也适用于post
方法:payload={“catalogItem”:“Req Name”}
response=requests.post(url,headers=headers,params={“params”:json.dumps(payload)},verify=False)
很高兴能提供帮助。您成功地为postman使用的URL告诉了您应该知道的一切,以使请求生效。GET请求的约定是将查询字符串以=
对的形式附加到URL,并在问号?
后用&
分隔。从URLhttps://areallylongurl?params={“catalogItem”:“Req Name”}
表示服务器需要一个GET请求,该请求的参数名为'params'
,值为JSON格式,因此,您应该使用请求发出此类请求。相应地,使用params
参数获取
。通常,在给定相同API的情况下,get和POST方法都可以工作,因为大多数web app框架都以相同的方式处理get和POST请求的参数,因此web app可以对这两种类型的请求使用一致的逻辑请求。
response = requests.get(url, headers=headers, params={"params": json.dumps(payload)}, verify=False)