我正在尝试创建等效于
的Python curl -u username:password http://policeapi2.rkh.co.uk/api/forces
如此处所述http://www.police.uk/api/docs/authentication/
我已通过浏览器手动登录并使身份验证正常工作
我首先尝试了基本身份验证:
voidspace.org.uk/python/articles/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上看到了这一点:
'问题可能是每个HTTP-Standard的Python库首先发送一个未经身份验证的请求,然后只有当它通过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的新手,我不知道是否我的基础知识错误或者出现了更复杂的问题。
感谢您提供的任何帮助。
答案 0 :(得分:0)
我已通过浏览器手动登录并使身份验证正常工作
你是怎么做到的?
您是否使用FireBug或其他工具观察实际发生的情况?
在阅读太多StackOverflow答案之前,您应该研究一下有效的方法。