Uber API - конечная точка запросов не может прочитать чтение json

Я пытаюсь сгенерировать запрос POST для конечной точки requests в следующем коде Python:

import requests
...
response = requests.post(
'https://sandbox-api.uber.com/v1/requests',
headers = {
    'Authorization': 'Bearer %s' % access_token,
    'Content-Type': 'application/json'
},
params={"start_latitude":"37.334381","start_longitude":"-121.89432","end_latitude":"37.77703","end_longitude":"-122.419571","product_id":"a1111c8c-c720-46c3-8534-2fcdd730040d"})
data = response.json()

Access_token был получен с использованием области запроса при авторизации. Ответ json: {"message": "Невозможно разобрать JSON в теле запроса.", "code": "invalid_json"}

Нужна помощь в правильном оформлении запроса. Спасибо.


person user3904183    schedule 20.04.2015    source источник


Ответы (1)


Выяснил проблему - пришлось заменить поле params полем данных и обернуть dict с помощью json.dumps() перед отправкой.

person user3904183    schedule 20.04.2015
comment
Не могли бы вы уточнить, что это влечет за собой? Не программист на Python, но сталкиваюсь с той же проблемой при попытке доступа к API Uber из клиента Cocoa Rest. - person Awesome-o; 22.05.2015
comment
Замените params={‹param-contents›} на data=json.dumps({‹param-contents›}) - person user3904183; 23.05.2015
comment
Итак, вам нужно расшифровать JSON и добавить его в тело запроса. Мне кажется, что Cocoa Rest Client должен делать это автоматически. Тогда не знаю, что у меня не работает... - person Awesome-o; 28.05.2015
comment
@Awesome-o, ты понял, как опубликовать параметр в Rest Client? - person Jagdeep; 25.06.2015
comment
@Jagdeep Я могу включать только параметры запроса в URL-адрес запроса, чтобы заставить API работать. Насколько я могу судить, наличие параметров запроса в виде JSON в теле запроса не работает. - person Awesome-o; 25.06.2015
comment
Спасибо. Возможно, потребовалось некоторое время, чтобы понять (но это не так!), спасибо за ваш ответ. - person Peege151; 21.06.2016