Postman带sessionId的post请求访问失败
- 1、Python 调用过程
- 2、Postman 错误示例
- 3、Postman 正确示例
- 4、总结
使用 Python 访问一个数据接口,调用是正常的,但是使用 Postman 进行访问时出错了,搞了两天,后面发现很简单,故记录一下。
1、Python 调用过程
Python 调用接口代码如下:
import requests
import json
if __name__ == "__main__":
api_url = "https://xxx.xxx.xxx.com/XXX/XXX"
session_id = "xxx"
pl = {"bgtime": "2022-10-01 00:00:00","endtime": "2022-10-31 23:59:59"}
headers = {'Cookie': 'Cookie_1=value; Cookie_7=value; sessionId={}'.format(session_id),'Content-Type': 'application/json',}
req = requests.post(api_url, headers=headers, data=json.dumps(pl))
data = req.json()
print(data)
调用返回结果:
{
'code': 200,
'list': [
{'xxx': 'xxx', ……},
{'xxx': 'xxx', ……},
{'xxx': 'xxx', ……},
]
}
2、Postman 错误示例
错误1:Post 请求误做 Get 请求。
错误2:参数设置问题,这里把 Get 请求换成了 Post 请求,并且把参数由 Params 放到了 Body 下的 x-www-form-urlencoded。
3、Postman 正确示例
以下是正确示例:
值得注意的是,sessionId 设置方式:
之前一直以为是sessionId 的设置有问题,改了好几遍也没用,结果是参数设置有问题,所以还是要好好分析一下那段 Python 代码,Post 请求代码是req = requests.post(api_url, headers=headers, data=json.dumps(pl))
,由此可知,api_url 是对的,headers 也是对的,data 是参数,参数是 json 形式的,打印出来见代码第 4 行,所以把这串 json 放入 Postman 的 Body 下的 raw 或 json 就行。
pl = {"bgtime": "2022-11-01 00:00:00","endtime": "2022-11-30 23:59:59"}
data=json.dumps(pl)
print(data)
# {"bgtime": "2022-11-01 00:00:00", "endtime": "2022-11-30 23:59:59"}
4、总结
仅以此文,记述尴尬又庸碌的编程生活,望给读此文的朋友提供一点点益处。