Аутентификация HTTP в Python

Не вызывайте htmlentities() на выходе, это просто необходимо, если вы собираетесь отображать его в браузере. Вы не хотите делать это, если собираетесь обрабатывать как необработанный XML. В этом случае ваш первый пример будет работать просто отлично.

$xml = file_get_contents($cas_url);
$dom = new DomDocument();
$dom->loadXML($xml);
$xpath = new DomXPath($dom);
$node = $xpath->query("//cas:user");
if ($node->length) {
    echo $node[0]->textContent;
}

15
задан bignose 1 May 2009 в 04:22
поделиться

2 ответа

Прием должен создать менеджер паролей и затем сказать urllib об этом. Обычно, Вы не будете заботиться об области аутентификации, просто часть хоста/URL. Например, следующее:

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
top_level_url = "http://example.com/"
password_mgr.add_password(None, top_level_url, 'user', 'password')
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(urllib2.HTTPHandler, handler)
request = urllib2.Request(url)

Установит имя пользователя и пароль на каждый URL, запускающийся с top_level_url. Другие опции состоят в том, чтобы указать имя хоста или больше полного URL здесь.

Хороший документ, описывающий это и больше по http://www.voidspace.org.uk/python/articles/urllib2.shtml#id6.

20
ответ дан 1 December 2019 в 02:46
поделиться

Да, взгляните на urllib2. HTTP*AuthHandlers.

Пример из документации:

import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm='PDQ Application',
                          uri='https://mahler:8092/site-updates.py',
                          user='klem',
                          passwd='kadidd!ehopper')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
urllib2.urlopen('http://www.example.com/login.html')
6
ответ дан 1 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: