Python请求POST不包含所有发送的数据

时间:2018-10-23 18:10:27

标签: django python-3.x post python-requests payu

我正在尝试通过其REST API在PayU上创建新订单。我正在发送“获取访问令牌”,并且我有正确的答案。然后我发送“创建新订单”,aaaa,我收到103错误,错误语法。

我尝试使用https://webhook.site/时,意识到语法为何不好-列表中没有值。

在创建新订单时发送POST的代码:

data = {
    "notifyUrl": "https://your.eshop.com/notify",
    "customerIp": "127.0.0.1",
    "merchantPosId": "00000",
    "description": "RTV market",
    "currencyCode": "PLN",
    "totalAmount": "15000",
    "products": [{
                "name": "Wireless mouse",
                "unitPrice": "15000",
                "quantity": "1"}]}

headers = {
"Content-Type": "application/json",
"Authorization": str('Bearer ' + access_token).encode()}

r = requests.post('https://webhook.site/9046f3b6-87c4-4be3-8544-8a3454412a55',
                   data=payload,
                   headers=headers)
return JsonResponse(r.json())

Webhooc显示我发布的内容:

customerIp=127.0.0.1&notifyUrl=https%3A%2F%2Fyour.eshop.com%2Fnotify&currencyCode=PLN&products=name&products=unitPrice&products=quantity&description=RTV+market&merchantPosId=00000&totalAmount=15000

没有“名称”,“单价”和“数量”的值。 PayU确认这就是唯一的问题。

为什么?怎么了?

发送简单的POST请求以获取令牌始终是成功的。

1 个答案:

答案 0 :(得分:1)

如果要发送JSON,请使用json的{​​{1}}参数:

post()

否则,数据将以表单编码数据的形式发送,鉴于您希望发送嵌套的r = requests.post('https://webhook.site/9046f3b6-87c4-4be3-8544-8a3454412a55', json=payload, # Use the json argument headers=headers) 列表,我想这不是您想要的。

使用products参数时,内容类型会自动设置为json,因此您不必自己进行设置。

application/json

有关使用请求发送JSON here

的更多信息