2016-06-28 8 views
0

Я новичок в cURL и запросах, и у меня есть сомнение в том, как я могу преобразовать петицию cURL в команду Requests в Python.Преобразование команды cURL в команду Python Requests

Глядя на Apache Stratos документации Doc Page выполнить вход на сервер, в Curl используется:

curl -X GET -H "Content-Type: application/json" -k -v -u admin:admin https://localhost:9443/api/session 

И это работает на терминале. Теперь я хочу сделать то же самое на моем сайте Django и преобразовать URL-адрес curl в код python и использовать модуль «запросы». Я не знаю, как передать пользователя и передать информацию в петицию.

код, который у меня сейчас это:

headers = {'Content-Type':'application/json'} 
data = {} 
req = requests.post('https://localhost:9443/api/session', headers=headers, params=data) 

Но я не знаю, как передать имя пользователя и пароль, поэтому я попытался это (Requests Python Login Tutorial)

data = {"username":"admin","password":"admin"} 

Но я получить сертификат ошибка с сервера:

File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 385, in send raise SSLError(e) 
requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

Итак, я правильно отправляю пользователя и пароль? Как я могу решить ошибку сертификата?

Спасибо и привет

+0

Вы находитесь на локальном хосте. Это абсолютно необходимо для использования SSL? Попробуйте 'http: // localhost: 9443/api/session'. Запросы на Python на самом деле очень гладко относятся к SSL, но действительный SSL-сертификат на localhost кажется маловероятным. –

+0

Да, все URL-адреса на странице doc используют Https и при доступе к странице входа в Firefox вам нужно добавить исключение безопасности для просмотра страницы. – Aker666

+0

Похоже, у вас есть два ответа на выбор: –

ответ

2

Вы можете turn off SSL cert verification с verify флагом, и использовать basic authentication, указав auth.

from requests.auth import HTTPBasicAuth 

req = requests.post('https://localhost:9443/api/session', headers=headers, auth=HttpBasicAuth('admin', 'admin'), verify=False) 

См. requests docs для получения дополнительной информации.

+0

Да, я нашел его после ответа @Sam. Но все равно спасибо :) – Aker666

2

Вы используете Localhost, который почти наверняка не имеет действующий сертификат.

Для целей тестирования отключить проверку SSL (он по-прежнему зашифрован просто не проверочный сертификат)

req = requests.post('https://localhost:9443/api/session', headers=headers, params=data, verify=False) 
+0

'verify = False' Nice. –

+0

Спасибо, я не знал этого флага! – Aker666

0

После решения и глядя @ Сэм на Requests Auth Doc Page я нашел решение:

Питон Resquest код это:

requests.get('https://localhost:9443/api/session', headers=headers, auth=HTTPBasicAuth('admin', 'admin'), verify=False) 

В «Титулы» поле он не нужен.

И потом:

u'{"Success":{ "sessionId": "547D78FD4966DDBE21AEFDAECE909DEC"}}' 

Надеется, что это помогает кто-то!

Смежные вопросы