... import urllib import urllib2 #this is just to prepare a dynamic uri (this is actual code from a system I'm building, sorry) fileDownloadServiceURL = '%s://%s:%s/%s' % (transport,server,port,pathToController) postData = {'URI':fileUri} #add more post stuff here postData = urllib.urlencode(postData) #make sure you encode your post data #add some custom headers if you need them headers={"Host": server+':'+port,"Cookie":"JSESSIONID="+sessionId,"User-Agent":"Name of your User-Agent Here"} #prepare your request, with headers and post data req = urllib2.Request(fileDownloadServiceURL,postData,headers) #and this is the magic. Create a HTTPHandler object and put its debug level to 1 httpHandler = urllib2.HTTPHandler() httpHandler.set_http_debuglevel(1) #Instead of using urllib2.urlopen, create an opener, and pass the HTTPHandler #and any other handlers... to it. opener = urllib2.build_opener(httpHandler) #User your opener to open the Request. urlHandle = opener.open(req) #you'll end up with a file-like object... which I called urlHandle ...
The ouput will have useful debugging info about the HTTP connection.
connect: (localhost, 8080) send: u'POST /arcturus-web/fileVariableDownload.service HTTP/1.1rnAccept-Encoding: identityrnContent-Length: 57rnConnection: closernUser-Agent: Temboo Twyla/Arcturus HTTP DownloaderrnHost: localhost:8080rnCookie: JSESSIONID=1b8xl8nozb2irnContent-Type: application/x-www-form-urlencodedrnrn' send: 'URI=temboo%3A%2F%2Fwww.one.com%2Ffiles.f%2Fmapping1.m.var' reply: 'HTTP/1.1 200 OKrn' header: Content-Language: en-US header: Content-Type: text/html; charset=ISO-8859-1 header: Connection: close header: Server: Jetty(6.0.2)