Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当同一个帖子在Postman中正常工作时,如何排除Python请求帖子失败的故障?_Python_Python 3.x_Python Requests - Fatal编程技术网

当同一个帖子在Postman中正常工作时,如何排除Python请求帖子失败的故障?

当同一个帖子在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 = {

我继续从python请求中得到一条非常通用、毫无帮助的错误消息,当我发出POST请求时,它在Postman中运行良好

无论我尝试什么,我都会继续收到两条错误消息中的一条。请注意,调用python脚本没有第155行,负载也不包含字母“u”:

Postman中,正确解释参数,然后将其附加到url,例如:

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,并在问号
后用
&
分隔。从URL
https://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)