首页 > 解决方案 > 使用 python 请求发布带有数组的请求

问题描述

如何使用 python 请求创建这样的发布请求?

$url = 'https://joinposter.com/api/incomingOrders.createIncomingOrder'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$incoming_order = [
    'spot_id'   => 1,
    'phone'     => '+380680000000',
    'products'  => [
        [
            'product_id' => 169,
            'count'      => 1
        ],
    ],
];

$data = sendRequest($url, 'post', $incoming_order);

我试过这样做:

payload = {'token': 687409:4164553abf6a031302898da7800b59fb,
                          'spot_id': 1, 'phone': '+380680000000', 'products': {'product_id': 169, 'count': 1}}

r = requests.post('https://joinposter.com/api/incomingOrders.createIncomingOrder', params=payload)

但它没有用。未正确创建参数“产品”。这是创建的 URL 的样子: https://joinposter.com/api/incomingOrders.createIncomingOrder?token=704698%3A8544082b36a413a51b5c8c3ce0e2b162&spot_id=1&phone=%2B380680000000&products=product_id&products=count

那么如何创建一个包含数组数组的发布请求呢?

标签: pythonphppostpython-requests

解决方案


尝试将您的令牌incoming_order分成两个属性:

import requests

url = "https://joinposter.com/api/incomingOrders.createIncomingOrder"
params = {'token': "xxxxxxxxxxxxxxxxxxxxx"}

incoming_order = {'spot_id': 1, 'phone': '+380680000000', 'products': {'product_id': 169, 'count': 1}}

r = requests.post(url=url, params=params, json=incoming_order)

print(r.status_code)

将令牌替换为有效令牌。


推荐阅读