Завиток с аутентификацией в Python с использованием стандартных библиотек - PullRequest
0 голосов
/ 10 февраля 2011

Я пытаюсь создать Python эквивалент

curl -u username:password <a href="http://policeapi2.rkh.co.uk/api/forces" rel="nofollow">http://policeapi2.rkh.co.uk/api/forces</a>

как указано здесь http://www.police.uk/api/docs/authentication/

Я вручную вошел в браузер и получил аутентификацию для работы

Я впервые попробовал базовую аутентификацию отсюда:

voidspace.org.uk / питон / статьи / authentication.shtml

Это не с

This page isn't protected by authentication.
But we failed for another reason.

Затем я попытался адаптировать этот stackoverflow.com/questions/1990976/convert-a-curl-post-request-to-python-only-using-standard-libary

import urllib2

def basic_authorization(user, password):
    s = user + ":" + password
    return "Basic " + s.encode("base64").rstrip()

req = urllib2.Request("http://policeapi2.rkh.co.uk/api/forces",
                headers = {
     "Authorization": basic_authorization("username", "password"),
    })

f = urllib2.urlopen(req)

print f.read()

и получите:

URLError: <urlopen error [Errno 10061] No connection could be made because the target machine actively refused it>

Я читал это на stackoverflow.com/questions/2407126/python-urllib2-basic-auth-problem:

'Проблема может заключаться в том, что библиотеки Python в соответствии со стандартом HTTP сначала отправляют неаутентифицированный запрос, а затем, только если он отвечает с повтором 401, правильные отправленные учетные данные. Если серверы Foursquare не выполняют «стандартную аутентификацию», библиотеки не будут работать. '

ссылка на «Эта страница не защищена аутентификацией». ошибка с базовой аутентификацией.

Я использовал их код:

import urllib2, base64

request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)   
result = urllib2.urlopen(request)'

но все равно выдается ошибка:

URLError: <urlopen error [Errno 10061] No connection could be made because the target machine actively refused it>

Я не уверен, что попробовать дальше. Я новичок в программировании на Python и использую Curl, и я в растерянности относительно того, правильно ли я понял основы или что-то более сложное пошло не так.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 10 февраля 2011

Я вручную вошел в браузер и получил аутентификацию для работы

Как ты это сделал?

Использовали ли вы FireBug или какой-либо другой инструмент для наблюдения за тем, что на самом деле произошло?

Вероятно, вам следует изучить, что сработало, прежде чем читать слишком много ответов StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...