2016-04-27 2 views
0

У меня возникла проблема с преобразованием рабочего вызова cURL во внутренний API для вызова запросов на python.Запрос на вызов Python не работает

Вот рабочий Curl вызов:

curl -k -H 'Authorization:Token token=12345' 'https://server.domain.com/api?query=query' 

Затем я попытался преобразовать этот вызов в скрипт Python запросы работы здесь:

#!/usr/bin/env python 
import requests 

url = 'https://server.domain.com/api?query=query' 
headers = {'Authorization': 'Token token=12345'} 

r = requests.get(url, headers=headers, verify=False) 

print r 

я получаю HTTP 401 или 500 ошибок в зависимости от того, как Я изменяю переменную заголовков. Я не понимаю, как мой запрос на python отличается от запроса cURL. Они оба запускаются с того же сервера, что и один и тот же пользователь.

Любая помощь будет оценена

+0

Возможный дубликат [запроса питона с проверкой подлинности (доступ \ _token)] (http://stackoverflow.com/questions/13825278/python-request-with-authentication-access-token) –

ответ

1

Трудно сказать, не зная свой API, но вы можете иметь редирект, что завиток чтя, что просьбы не является (или, по крайней мере, не посылать заголовки на редирект).

Попробуйте использовать объект сеанса, чтобы гарантировать, что все запросы (и перенаправления) имеют ваш заголовок.

#!/usr/bin/env python 
import requests 

url = 'https://server.domain.com/api?query=query' 
headers = {'Authorization': 'Token token=12345'} 

#start a session 
s = requests.Session() 

#add headers to session 
s.headers.update(headers) 

#use session to perform a GET request. 
r = s.get(url) 

print r 
+0

Когда я пытаюсь выполнить свой скрипт, я получаю внутреннюю служебную ошибку HTTP 500. '' Я привязал журнал доступа к серверу apache ssl API и подтвердил, что ответ был 500. –

0

Я понял это, оказывается, я должен указать «принять» значение заголовка, рабочий сценарий выглядит следующим образом:

#!/usr/bin/env python 
import requests 

url = 'https://server.domain.com/api?query=query' 
headers = {'Accept': 'application/app.app.v2+json', 'Authorization': 'Token token=12345'} 

r = requests.get(url, headers=headers, verify=False) 

print r.json() 
Смежные вопросы