#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 и благодарю за то, что решение было аккуратным и чистым.