Python HTTP-запрос не возвращается json вывод - PullRequest
0 голосов
/ 07 августа 2020

Когда я использую следующую команду, я получаю правильный json ответ от URL: curl --user user:password -H Accept:application/json -H Content-Type:application/json -X GET <url>

"body": {"items": [{...... ..}]}

Однако, когда я пытаюсь сделать то же самое, используя python модуль запроса

import requests

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

user='admin'
password='yanQE3B'
url=<requestUrl>

response = requests.get(url, auth=(user, password) , verify=False)

print ( response.content )  ## prints html content

print ( response.text )     ## prints html content

data = response.json()    ## error json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  • , когда я делаю запрос. json (), я получаю сообщение об ошибке json .decoder.JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (char 0)

  • , когда я печатаю request.content - он возвращает * Список 1029 * с содержанием html. Вывод reponse.text и response.content одинаков. Усечено html, так как возвращается большое количество тегов li:

<!DOCTYPE html>
<html>
<head>
<title>Data</title>
</head>
<div>
<ul>
<li>
body&nbsp;
<ul>
<li>items&nbsp;<ol>
<li>
<ul>
<li>name&nbsp;........ </li><li>messages&nbsp;<ol>
</ol></li></ul></div></body></html>

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

заголовки = {'Accept': 'application / json'} добавлено в requests.get

0 голосов
/ 07 августа 2020

Кажется, что URL-адрес, который вы пытаетесь получить JSON, по умолчанию возвращает только страницу HTML.

Из запроса curl, где вы явно передали тип содержимого application/json, следовательно вам необходимо аналогичным образом обновить свой запрос, как показано ниже:

response = requests.get(url, auth=(user, password), verify=False, 'headers': {'Content-Type': 'application/json'})

Примечание. Вышеупомянутый метод работает, только если ваш URL-адрес действительно возвращает ответ JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...