просит беды ПОСТ - PullRequest
       29

просит беды ПОСТ

0 голосов
/ 02 ноября 2018

Я создал этот скрипт Python:

import requests

url = 'https://123.456.789.876:4567/config'
payload = { 'key' : '[{"aKey":"ggsdgfgdfsgsdgfdsgsgsdfgdfgf","id":"fsdfdsfdsfsdffdsfdsfsdfdfsdsfsfdsfdssf","failedOps":[],"tType":"valid","type":"mam"}]' }
headers = { 'Content-Type': 'application/json' }
res = requests.post(url, data=payload, headers=headers, verify=False)
print(res.json)

Когда я запускаю его, я получаю такой ответ:

<bound method Response.json of <Response [400]>>

Если я изменю print(res.json) на print(res.text), я получу:

MOCK: Could not generate configuration list from request body

Если я удаляю `verify = False, я получаю эту ошибку:

raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='123.456.789.876', port=4567): Max retries exceeded with url: /config (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)'),))

Я не уверен, что здесь не так. Есть ли проблема со структурой моего запроса?

1 Ответ

0 голосов
/ 02 ноября 2018

<bound method Response.json of <Response [400]>>

Ваш объект ответа имеет метод json, а не атрибут. См. документы . Вам нужно позвонить , как:

print(res.json())

MOCK: Could not generate configuration list from request body

Это может быть фактическое содержимое ответа HTTP (что означает, что если вы попытаетесь вызвать метод .json(), произойдет сбой, поскольку это не ответ JSON).

raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='123.456.789.876', port=4567): Max retries exceeded with url: /config (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)'),))

Этого следовало ожидать: вы подключаетесь к хосту, который представляет сертификат, для которого модуль requests не распознает полномочия подписи. Существуют различные документы, в которых описывается, как добавить новый центр сертификации в вашу систему. Процесс зависит от операционной системы и, возможно, от дистрибутива.

Если вы хотите проверить SSL-сертификаты, вам обычно нужно использовать имена хостов, а не IP-адреса.

...