2016-12-07 3 views
-1

Я пытаюсь написать скрипт python для отправки HTTP-запроса, поэтому я прочитал из документации Python в библиотеке urllib2 (https://docs.python.org/2/howto/urllib2.html#id6) и взял образец кода с аутентификацией, но я все еще получить ошибки ...Отправить HTTP-запрос с использованием python - Ошибка

Вот мой код (* top_level_url = Войти URL, a_url = запрос API, который работает в сети, и показывает ответ):

import urllib2 

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() 

# Add the username and password. 
# If we knew the realm, we could use it instead of None. 
user='MY_USER_NAME' 
passwd='MY_PASSWORD' 
top_level_url = "https://next.adjust.com/#/login" 
password_mgr.add_password(None, top_level_url, user, passwd) 

handler = urllib2.HTTPBasicAuthHandler(password_mgr) 

# create "opener" (OpenerDirector instance) 
opener = urllib2.build_opener(handler) 

# use the opener to fetch a URL 
a_url = 'https://api.adjust.com/kpis/v1/vzpmna78ud8m/cohorts?start_date=2016-12-05&end_date=2016-12-06&kpis=sessions&grouping=os_names,countries' 
opener.open(a_url) 

# Install the opener. 
# Now all calls to urllib2.urlopen use our opener. 
urllib2.install_opener(opener) 

Но когда я запускаю код, Я получаю сообщение об ошибке:

Traceback (most recent call last): 
    File "httptest3.py", line 19, in <module> 
    opener.open(a_url) 
    File "/usr/lib64/python2.7/urllib2.py", line 437, in open 
    response = meth(req, response) 
    File "/usr/lib64/python2.7/urllib2.py", line 550, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib64/python2.7/urllib2.py", line 475, in error 
    return self._call_chain(*args) 
    File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain 
    result = func(*args) 
    File "/usr/lib64/python2.7/urllib2.py", line 558, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 401: Unauthorized 

Я пробовал многократное решение этой ошибки, но я продолжаю получать то же самое ... Кто-нибудь знает, что случилось в моем коде? или у вас есть другой образец кода, который работает? (как я уже сказал, я пробовал 10 лучших результатов в google ...)

Спасибо!

+0

Ошибка 401 говорит, что вы «несанкционированный», что означает (в общем) ваша аутентификация не работает. Проверьте свои учетные данные и особенно проверьте метод проверки подлинности, используемый вашим https://api.adjust.com/, это не то же самое во всех API Интернета. – Saksow

+0

Базовая аутентификация HTTP, которую вы используете в urllib2, не работает по доменам, и здесь у вас есть top_level_url, установленный на https://next.adjust.com/#/login, тогда вы вызываете URL-адрес в другом домене. См. Http://stackoverflow.com/q/339244/121199 – filippo

+0

@Saksow Имя пользователя и пароль, которые я написал в скрипте, - это точные данные, которые я использую для подключения к сайту ... – Bramat

ответ

1

Похоже, что у вас setup.com используется другой тип аутентификации для их api, чем вы используете.

U следует читать эту документацию: https://docs.adjust.com/en/kpi-service/#authentication

Вместо того, чтобы использовать имя пользователя и пароль, вы должны добавить заголовок HTTP в запросе:

Authorization: Token token=your_user_token

Или вы можете добавить &user_token=your_user_token к вашему апи вызова ,

+0

Большое вам спасибо - это первый раз, когда я использую HTTP-запрос, вы были очень полезны :) – Bramat

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

  • Нет связанных вопросов^_^