首页 > 解决方案 > 如何在 Post 请求中连同 json 参数一起发送表单数据?

问题描述

我正在尝试使用我在网络模块中搜索的参数发出 Post 请求来构建 jenkins 作业,并观察到我们在发出 post 请求时需要传递的以下表单数据。我创建了一个名为 payload 的字典并将其与数据一起发送,但出现 400 错误。如何在请求中发送此表单数据(注意还有json数据,不知道如何发送)

表格数据:

name:user
value:foo
statusCode:303
redirectTo:.
Jenkins-Crumb:xyz
json:{"parameter": {"name": "user", "value": "foo"}, "statusCode": "303", "redirectTo": ".", "Jenkins-Crumb": "xyz"}
Submit:Build

代码:

json = {"parameter": {"name": "user", "value": "foo"}, "statusCode": "303", "redirectTo": ".", "Jenkins-Crumb": "xyz"}
payload = {'json':json, 'Submit':'Build', "name": "user", "value": "foo", "statusCode": "303", "redirectTo": ".", "Jenkins-Crumb": "xyz"}
url_build_job = 'some valid and tested url'
response = requests.post(url_build_job, headers = {'Cookie':'abc'}, data= payload, proxies = Jenkins.proxyDict)
print(response)

标签: pythonjenkinspython-requests

解决方案


如果您尝试JSON使用请求将数据发送到端点HTTP POST,则可以执行以下任一操作:

>>> import json

>>> url = 'https://api.jenkins.com/some/endpoint'
>>> payload = {'some': 'data'}

>>> r = requests.post(url, data=json.dumps(payload))

或者这个(首选方式):

>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}

>>> r = requests.post(url, json=payload)

有关详细信息,请参阅文档。


推荐阅读