python - Python 请求无效消息
问题描述
我是 Python 新手,正在尝试发出发布请求。在请求的有效负载中分配变量时遇到问题。删除我的变量并简单地放置一个值时,请求工作正常,但是当我尝试为我的变量交换硬值时,我收到错误
{"error":{"type":"validation","message":"Invalid message"}}
我已关注以下文章,但似乎没有任何帮助我的情况
https://realpython.com/python-requests/#the-message-body
这是我的代码片段。变量p在“分页”后的有效载荷中找到
import requests
p = 3
url = "someURL"
payload = "{\r\n\"filters\": {\r\n\"date_from\":\"2011-09-15\",\r\n\"date_to\":\"2019-11-20\"\r\n},\r\n\"pagination\":{\r\n\t\"page\": p,\r\n\t\"limit\":100\r\n}\r\n}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Basic someAuth'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text.encode('utf8'))
我知道有效负载没有将我的变量识别为整数,但我不确定如何传递变量。最终目标是运行 POST 请求的多次迭代,并为每次迭代增加变量。我需要捕获响应数据,因此无法使用 Postman 执行此任务。
谢谢
解决方案
你的问题是p
你payload
的只是正常的字符 - 不是来自变量的值p
您将不得不使用字符串格式
payload = '"page": {}'.format(p)
或者f-string
payload = f'"page": {p}'
将值放入字符串中。
顺便说一句:' '
如果您必须使用" "
内部文本,您可以将所有文本放入
也许更好地创建普通字典并使用json=
- 它会将其转换为 string 并添加 header 'Content-Type': 'application/json'
。您可以在下一个请求中轻松设置下一页
payload['pagination']['page'] += 1
import requests
p = 3
url = "someURL"
payload = {
"filters": {
"date_from": "2011-09-15",
"date_to": "2019-11-20",
},
"pagination": {
"page": p,
"limit": 100,
}
}
headers = {
'Authorization': 'Basic someAuth'
}
response = requests.post(url, headers=headers, json=payload)
print(response.content) # encoded data
#print(response.text)
# next page
payload['pagination']['page'] += 1
response = requests.post(url, headers=headers, json=payload)
print(response.content) # encoded data
#print(response.text)
推荐阅读
- php - 垂直滚动新闻卡在时间延迟“WP News and Scrolling Widgets”wordpress
- ruby - 无法使用 Ruby/Tk 和 ocra 创建独立程序
- amazon-web-services - 如何允许 API Gateway 代理与 Cognito Authorizer 集成以进行 POST 请求?
- r - 在 R 中使用带有大数据集的 glm - 内存耗尽
- ruby-on-rails - 属性使用枚举时如何进行活动记录查询
- java - 在 java 中使用 Socket IO 发送推送通知
- microservices - 单体+微服务
- python - 在浏览器中使用 Opencv 集成人脸识别系统
- javascript - 有条件地换行
- 标签并删除第一个字符
- scala - 数据从 Jsonfile 驱动以随机化数据时,未找到 JsonPath 路径异常