繁体   English   中英

Python请求无效消息

[英]Python request invalid message

我是 Python 新手,正在尝试发出帖子请求。 在请求的有效负载中分配变量时遇到问题。 当删除我的变量并简单地放置一个值时,请求工作正常,但是当我尝试为我的变量交换硬值时,我收到错误

{"error":{"type":"validation","message":"Invalid message"}}

我遵循了以下文章,但似乎没有任何帮助我的情况

https://realpython.com/python-requests/#the-message-body

Python 请求和可变负载

这是我拥有的代码片段。 在“分页”之后的有效负载中找到变量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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM