#python #python-requests #http-post #intercom
#python #python-запросы #http-post #внутренняя связь
Вопрос:
Я пытаюсь получить список разговоров из Intercom, используя их API, ограниченный в зависимости от даты их обновления.
Их сайт (https://developers.intercom.com/intercom-api-reference/reference#search-for-conversations ) говорит
Для поиска разговоров вам необходимо отправить запрос POST на https://api.intercom.io/conversations/search . Это примет объект запроса в теле, который определит ваши фильтры для поиска разговоров.
Итак, я попытался:
import requests
url = 'https://api.intercom.io/conversations/search'
data_params = {
"query": {
"field": "updated_at",
"operator": ">",
"value": 1560436784
}
}
headers = {'Authorization' : 'Bearer ******************', 'Accept':'application/json', 'Content-Type':'application/json'}
r = requests.post(url, headers = headers, data = data_params)
r.status_code
Это постоянно приводит к 'Bad Request'
ошибке 400, но я изо всех сил пытаюсь понять, почему. Я также пробовал json = data_params
в вызове post, но результат тот же. Я понимаю, что код может быть не полностью воспроизводимым, поскольку для него требуется аутентифицированное соединение с API, но если что-то явно не так, было бы полезно знать!
Ответ №1:
Очевидно, что здесь, похоже, нет obviously error
.
для 400 Bad Request
. Я думаю, вам следует проверить вас data_params
, если чего-то не хватает или в плохом формате. также headers
Ответ №2:
Вам следует попробовать преобразовать словарь data_params в json.
Я тестировал с помощью json.dumps, и, похоже, это сработало:
import json
url = 'https://api.intercom.io/conversations/search'
data_params = {
"query": {
"field": "updated_at",
"operator": ">",
"value": 1560436784
}
}
headers = {'Authorization' : 'Bearer ******************', 'Accept':'application/json', 'Content-Type':'application/json'}
r = requests.post(url, headers = headers, data = json.dumps(data_params))
print(r.status_code)