API POST запросов с использованием Python - код состояния 500 - PullRequest
0 голосов
/ 13 января 2020

Я пишу сценарий в Python (3.7.4, Windows 10) для запроса POST (REST API), цель которого - извлечь данные из другой базы данных и переместить ее в другую.

from os import getenv
import requests

# header includes login credentials and content type
header = {'access_key': "key", "access_token": getenv("token1"), 'content-type': 'application/json'}

# Body includes table names and other specified data to retrieve
body = {
# table names etc.
}

# Post request and printing of the post request text
post_r = requests.post(url = POST_url, data = body, headers = header)
post_text = post_r.text
print(post_text)

При этом возникает ошибка HTTP с кодом состояния 500. Что я должен изменить в своем коде, чтобы он правильно печатал post_text ?

1 Ответ

0 голосов
/ 13 января 2020

Я нашел решение:

post_r = requests.post(url = POST_url, data = body, headers = header)

следует изменить на

post_r = requests.post(url = POST_url, json = body, headers = header)

Итак, я просто заменил data на json и скрипт напечатал мне вывод post_text очень хорошо.

Не помогло изменить 'content-type' в заголовке до «приложение» . Он выдал мне код состояния 415 ( "HTTP 415 Unsupported Media Type: код ответа клиента об ошибке указывает, что сервер отказывается принять запрос, поскольку формат полезной нагрузки находится в неподдерживаемом формате. Возможно, проблема с форматом связана с указанным в содержимом запроса -Тип или Content-Encoding, или в результате прямой проверки данных. ").

Мне все еще интересно, почему data = body недопустимо в строке запроса после публикации .

...