Использование python для публикации теста в API

#python #http-post

Вопрос:

 import requests,json

verify='/users/myprofile/Downloads/.me/ca_bundle.crt'

data = {"Authorization": "Basic ODE2YzMzM2ZmYzUwNDg1MThlNTJmMWMyMWJiYzZhOTQ6NWExNDFhMGExNGI4NGQ2OWIyMjUxYTI2OGYwZDJlYjk="}

url = "https://api.pge.com/datacustodian/test/oauth/v2/token?grant_type=client_credentials"

response = requests.post(url, cert=('/users/David/Downloads/bei.me/private.key', data)

#print("status code", response.status_code)
 

Ошибка, которую я получаю:
Файл «SSLTest.py», строка 12

                                            ^
 

Синтаксическая ошибка: неожиданный EOF при синтаксическом анализе

Как мне включить свой общедоступный сертификат при вызове api коммунальной компании? Они заставили меня представить свой публичный сертификат

Ответ №1:

Вы должны положить:

 response = requests.post(url, cert='/users/David/Downloads/bei.me/private.key', data)
 

В дополнение:

Сертификат ЦС не является обязательным для общедоступных веб-сайтов

PS: ваша переменная данных выглядит как заголовок, поэтому вы можете захотеть:

 response = requests.post(url, cert='/users/David/Downloads/bei.me/private.key', headers=data)
 

Комментарии:

1. это не настоящий веб-сайт (мой-нет), просто сертификат, подтверждающий, что я тот, кто говорит, что я есть, когда я публикую его на веб-сайте pge (у них есть мой сертификат).

2. спасибо, теперь я получаю запросы.исключения. Ошибка SSL: HTTPSConnectionPool(хост=’api.pge.com’, порт=443): Превышено максимальное количество повторных попыток с url: /datacustodian/test/oauth/v2/токен?grant_type=client_credentials (Вызвано ошибкой SSL(ошибка SSL(9, ‘[SSL] PEM lib (_ssl.c:3880)’)))

3. Использование ключевого слова cert позволит протоколу SSL работать с конкретными веб-сайтами, созданными самостоятельно. Вы не должны помещать сюда свой закрытый ключ. вы можете просто положить: response = requests.post(url, headers=data)

4. PGE требует сертификат для сквозной связи со своим API