Post-запрос с массивами с использованием запросов python

#python #php #post #python-requests

#python #php #Публикация #python-запросы

Вопрос:

Как я могу создать post-запрос, подобный этому, с помощью запросов 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)
 

Но это не сработало. Параметр ‘products’ создан неправильно. Вот как выглядит созданный URL-адрес:
https://joinposter.com/api/incomingOrders.createIncomingOrder?token=704698:8544082b36a413a51b5c8c3ce0e2b162amp;spot_id=1amp;phone=+380680000000amp;products=product_idamp;products=count

Итак, как я могу создать post-запрос с массивами массивов в нем?

Комментарии:

1. HTTP — это текстовый протокол. Наиболее распространенный способ преобразования нестроковых файлов в строки — это использование json.dumps(...) which преобразует словарь в текстовый формат. Затем сервер должен преобразовать его обратно.

Ответ №1:

Попробуйте разделить ваш токен и 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)
 

Замените токен допустимым токеном.

Комментарии:

1. Я отправлял data=incoming_order и благодарю за то, что решение было аккуратным и чистым.