如何在 Python 中进行 POST 时修复 <Response [400]>?

Posted

技术标签:

【中文标题】如何在 Python 中进行 POST 时修复 <Response [400]>?【英文标题】:How to fix <Response [400]> while make a POST in Python? 【发布时间】:2016-08-31 19:02:54 【问题描述】:

在运行脚本时,我的终端中不断收到&lt;Response [400]&gt;

我试过了

import requests
import json

url = 'http://172.19.242.32:1234/vse/account'

data = ' 
  "account_id": 1008,
  "email_address": "bhills_4984@mailinator.com",
  "password": "qqq",
  "account_type": "customer",
  "name_prefix": "",
  "first_name": "Beverly",
  "middle_names": "",
  "last_name": "Hills",
  "name_suffix": "",
  "non_person_name": false,
  "DBA": "",
  "display_name": "BeverlyHills",
  "address1": "4984 Beverly Dr",
  "address2": "4984 Beverly Dr",
  "address3": "",
  "city": "Beverly Hills",
  "state": "CA",
  "postal_code": "90210",
  "nation_code": "90210",
  "phone1": "3105554984",
  "phone2": "",
  "phone3": "",
  "time_zone_offset_from_utc": -5,
  "customer_type": "2",
  "longitude": -118.4104684,
  "latitude": 34.1030032,
  "altitude": 0
'

headers = 'content-type': 'application/json'

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

print r

我做错了什么?

【问题讨论】:

响应正文是什么? 我怎么看? There's a few properties and methods like .text, .content, .json() 【参考方案1】:

改变

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

r = requests.post(url, data=data, headers=headers)

因为data不是必须转换成json的dict,而是已经是json了。

【讨论】:

不是json=data吗?如果你通过data=data,那么它将被编码为x-www-form-urlencoded而不是application/json @Kos 理想情况下,数据将是一个字典,他将使用 json 参数而不是数据来传递它。 requests.post(url, json=data)

以上是关于如何在 Python 中进行 POST 时修复 <Response [400]>?的主要内容,如果未能解决你的问题,请参考以下文章

使用 jasmine / karma 进行 Angular 4 单元测试和 http post mocking - 如何修复

尝试执行 POST 方法时如何修复此 Sequelize Database 错误?

如何修复 .Net Core POST 操作中的 400 Bad Request 错误?

通过Angular App和NodeJS向快递服务器发送GET / POST请求时如何修复404 Not Found

如何修复python中graphql查询中的“解析错误(VAR_SIGN)”

如何使用 Python 2.7 在 Windows 上修复 pip 安装证书问题? [复制]