【问题标题】:How to send Form data in Post request along with json parameter?如何在 Post 请求中连同 json 参数一起发送表单数据?
【发布时间】:2018-08-30 12:21:32
【问题描述】:

我正在尝试发出 Post 请求以使用参数构建 jenkins 作业 我在网络模块中搜索并观察到我们在发出发布请求时需要传递的以下表单数据。 我创建了一个名为 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)

【问题讨论】:

  • 首先,你的api期望什么? 400 错误通常表示由于请求的语法不正确而无法完成请求。
  • 正确,我不想在请求中发送那些表单数据,我很困惑我应该发送 json 或 data 哪个参数,因为它由两者组成

标签: python jenkins python-requests


【解决方案1】:

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

>>> 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)

详情请咨询documentation

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 2021-12-16
    • 2013-08-22
    相关资源
    最近更新 更多