【问题标题】:post data using python-requests使用 python-requests 发布数据
【发布时间】:2015-11-27 10:10:27
【问题描述】:

我正在尝试发布以下数据。但我遇到了一个错误。你能看看吗?非常感谢。

我正在使用 Postman 发布相同的数据。它有效。

def _build_post_data(bike_instance):
    """
    data = {
        "apikey": "XXX",
        "data": {
            "created_at": "date_XX",
            "Price": "Decimal_XX"
        }
    }
    """
    data = {}
    raw_data = serializers.serialize('python', [bike_instance])
    actual_data = [d['fields'] for d in raw_data]
    data.update(
        {
            "apikey": XXX,
            "data": actual_data[0]
        }
    )
    return data

发布数据

bike = Bike.objects.get(pk=XXX)

data = _build_post_data(bike)

dump_data = json.dumps(data, cls=DjangoJSONEncoder)

requests.post(url, data=dump_data)

错误

u'{"error":{"message":"422 Unprocessable Entity","errors":[["The data field is required."],["The apikey field is required."]],"status_code":422}}'

dataapikey 已经在字典中。那为什么我会出错?有什么想法吗?

邮递员工作

【问题讨论】:

    标签: python django python-requests


    【解决方案1】:

    使用 Postman,您发送一个 multipart/form-data 请求,使用 requests只发送 JSON(Postman 中 data 字段的值),不包括 apikey字段。

    使用带有 JSON 数据的字典作为值之一,并将其​​作为 files 参数传入。它可能也可用作data 参数(以application/x-www-urlencoded 发送):

    form_structure = {'apikey': 'XXXX', 'data': dump_data}
    requests.post(url, files=form_structure)
    # probably works too: requests.post(url, data=form_structure)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2014-08-03
      相关资源
      最近更新 更多