[英]Python request invalid message
我是 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 用于此任务。
谢谢
您的问题是您的payload
中的p
只是普通字符 - 而不是来自变量p
值
您将不得不使用字符串格式
payload = '"page": {}'.format(p)
或f-string
payload = f'"page": {p}'
将值放入字符串中。
顺便说一句:如果您必须在文本中使用" "
您可以将所有文本放在' '
也许更好地创建普通字典并使用json=
- 它会将其转换为字符串并添加标题'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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.