2015-10-22 3 views
0

Я пытаюсь отправить запрос на получение с помощью python 2.7. Сервер, к которому я пытаюсь получить доступ, имеет базовую аутентификацию, а URL-адрес, к которому я обращаюсь, просто отображает строку, которую я хочу, чтобы мой скрипт печатал эту строку.Получить запрос с Python 2.7

Так что в основном мой код отправляет запрос на получение этого сервера, и он сохраняет строку, полученную с сервера, которая также имеет базовый auth.

Проблема заключается в том, что он распечатывает страницу html для страницы входа, а не строки.

username = 'username' 
password = 'password' 

server = "http://someserver/update" 

def get_auth(): 
    request = urllib2.Request(server) 
    base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '') 
    request.add_header("Authorization", "Basic %s" % base64string) 
    result = urllib2.urlopen(request) 
    # print(result) 

def get_string(): 
    f = urllib2.urlopen(server) 
    print f.read() 

def main(): 
    get_auth() 
    get_string() 

if __name__ == '__main__': 
    main() 
+0

Что вы собственно вопрос? –

+0

выводит только страницу входа в систему, я хочу, чтобы она переходила к строке. Если я использую postman/browser, я получаю строку –

+0

, вы уверены, что это действительно вход в систему? – user2266449

ответ

1

Они, как вы используете get_string() фактически никогда не посылает заголовок аутентификации.

Вместо того, чтобы возиться с urllib2, вы можете попробовать requests библиотеку вместо ::

import requests 
requests.get('http://someserver/update', auth=('username', 'password')) 

см: http://docs.python-requests.org/en/latest/user/authentication/

+0

Это работает, но im использует python 2.7, и я предпочитаю не использовать запросы. Есть ли альтернативный метод, чем этот? –

+0

запросы - это инструмент для использования здесь. То, что вы используете 2.7, не имеет отношения к запросам – user2266449

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