PUT with proxy-support
Shashwat Anand
anand.shashwat at gmail.com
Thu Aug 25 07:47:07 EDT 2011
On Thu, Aug 25, 2011 at 4:48 PM, Thomas Jollans <t at jollybox.de> wrote:
> On 25/08/11 13:07, Shashwat Anand wrote:
> > I want to make a PUT request.
> > I need some headers of my own ( certificates etc ) and I need to
> > mandatorily use a proxy.
> > Also the url is of the form http://www.xyz.com/abc and I don't have
> > permission to put data
> > on http://www.xyz.com while I do have permission to put data
> > on http://www.xyz.com/abc
> >
> > I tried httplib, httplib2, urllib2 with no avail.
>
> What did you try? What problems did you run into?
>
> I'm sure there is a way in Python, and chances are you were already
> close to finding it -- show us what you tried, what actually happened,
> including any error messages in full, and what you wanted to happen.
>
> Thomas
>
Hi Thomas,
so one of my tries was:
import urllib
import urllib2
import httplib
import httplib2
url = 'http://alatheia.zenfs.com/testing/shashwat'
body_content = 'CONTENT GOES HERE'
proxy = 'ca-proxy.corp.xyz.com:3128'
params = {
'x-sws-version' : '1.0',
'x-sws-access' : 'public',
'User-Agent' : 'CacheSystem',
'Cache-Control' : 'public',
'Content-Type' : 'text/plain',
'App-Auth' :
'v=1;a=client.alatheia.prod;h=10.16.19.23;t=1316594650;s=AeEYJMMfElN74fnWD3GlXJ4J.1KiQFg--',
}
httplib2.debuglevel=4
h = httplib2.Http(proxy_info = httplib2.ProxyInfo(3, '
ca-proxy.corp.xyz.com:3128', 3128))
resp, content = h.request(url, "PUT", body=body_content, headers = params)
print resp
print content
Output:
connect: (alatheia.zenfs.com, 80)
Traceback (most recent call last):
File "test.py", line 29, in <module>
resp, content = h.request(url, "PUT", body=body_content, headers =
params)
File "/home/y/lib/python2.6/site-packages/httplib2/__init__.py", line
1436, in request
(response, content) = self._request(conn, authority, uri, request_uri,
method, body, headers, redirections, cachekey)
File "/home/y/lib/python2.6/site-packages/httplib2/__init__.py", line
1188, in _request
(response, content) = self._conn_request(conn, request_uri, method,
body, headers)
File "/home/y/lib/python2.6/site-packages/httplib2/__init__.py", line
1123, in _conn_request
conn.connect()
File "/home/y/lib/python2.6/site-packages/httplib2/__init__.py", line 786,
in connect
self.sock.connect(sa)
File "/home/y/lib/python2.6/site-packages/httplib2/socks.py", line 381, in
connect
self.__negotiatehttp(destpair[0], destpair[1])
File "/home/y/lib/python2.6/site-packages/httplib2/socks.py", line 347, in
__negotiatehttp
raise HTTPError((statuscode, statusline[2]))
httplib2.socks.HTTPError: (403, 'Tunnel or SSL Forbidden')
The reason I can trace it is because,
I can use PUT on http://alatheia.zenfs.com/testing/shashwat but not on
http://alatheia.zenfs.com/ however host is resolved.
Again port 80 is used even when I use specific port (3128, in this case).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20110825/dc5c5dba/attachment-0001.html>
More information about the Python-list
mailing list