Update: Based on Lee's comment, I decided to condensate my code into a really simple script and run it from the command line:
import urllib2 import sys username = sys.argv[1] password = sys.argv[2] url = sys.argv[3] print("calling %s with %s:%s\n" % (url, username, password)) passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, url, username, password) urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))) req = urllib2.Request(url) f = urllib2.urlopen(req) data = f.read() print(data)
Unfortunately, it still will not generate the Authorization (per Wireshark) header: (
I have a problem sending basic AUTH to urllib2. I looked through this article and followed suit. My code is:
passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, "api.foursquare.com", username, password) urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))) req = urllib2.Request("http://api.foursquare.com/v1/user") f = urllib2.urlopen(req) data = f.read()
I see the following on Wire through wirehark:
GET /v1/user HTTP/1.1 Host: api.foursquare.com Connection: close Accept-Encoding: gzip User-Agent: Python-urllib/2.5
You can see that authorization is not sent, and when I send a request through curl: curl -u user:password http://api.foursquare.com/v1/user
GET /v1/user HTTP/1.1 Authorization: Basic =SNIP= User-Agent: curl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3 Host: api.foursquare.com Accept: */*
For some reason, my code doesn't seem to send authentication - does anyone see what I am missing?
thank
-simon
python authentication urllib2
Simon Mar 09 '10 at 6:50 2010-03-09 06:50
source share