Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > httplib/HTTPS Post Problem

Reply
Thread Tools

httplib/HTTPS Post Problem

 
 
michaelparkin@gmail.com
Guest
Posts: n/a
 
      07-11-2005
Hi,

Sorry to post what might seem like a trivial problem here, but its
driving me mad!

I have a simple https client that uses httplib to post data to a web
server.

When I post over http & https using curl the data is recieved by the
web server with no problems.

When I post using my python client the headers get there, but the body
of the message does not.

My code is pretty standard and has the format:


httplib.HTTPSConnection.debuglevel = 1
connection = httplib.HTTPSConnection(host_name, key_file = key,
cert_file = cert)
connection.putrequest("POST", path)
connection.putheader("Content-Length", str(len(body)))

....(some more headers)...

connection.endheaders()
connection.send(body)

response = connection.getresponse()
connection.close()

(some code has been removed for clarity)..

I can see in the debug messages the body getting sent, but nothing
arrives at
the server...

I think I would understand whats going on better if I knew how Python
uses the
underlying socket - does it

a) open the socket, send the header & body together or
b) send the header, wait, then send the body?

I think the answer to this question solve my problem - can anyone help?

Thanks.

p.s. I'm using Python 2.3.3 [GCC 3.3.3 (SuseLinx)]

 
Reply With Quote
 
 
 
 
Thomas Guettler
Guest
Posts: n/a
 
      07-11-2005
Am Mon, 11 Jul 2005 06:29:23 -0700 schrieb michaelparkin:

> Hi,
>
> Sorry to post what might seem like a trivial problem here, but its
> driving me mad!
>
> I have a simple https client that uses httplib to post data to a web
> server.
>
> When I post over http & https using curl the data is recieved by the
> web server with no problems.
>
> When I post using my python client the headers get there, but the body
> of the message does not.


Hi,

can you look at the access log of the server? A slash at the
end of a URL is important (www.google.com/ is different from
www.google.com)

response = connection.getresponse()
What does "print response" do?

You can listen on the wire with ethereal (Capture, then "follow tcp-stream")

HTH,
Thomas


--
Thomas GŁttler, http://www.thomas-guettler.de/


 
Reply With Quote
 
 
 
 
Andreas Kostyrka
Guest
Posts: n/a
 
      07-13-2005
Am Montag, den 11.07.2005, 06:29 -0700 schrieb http://www.velocityreviews.com/forums/(E-Mail Removed):
> Hi,
>
> Sorry to post what might seem like a trivial problem here, but its
> driving me mad!
>
> I have a simple https client that uses httplib to post data to a web
> server.
>
> When I post over http & https using curl the data is recieved by the
> web server with no problems.


Just a curious guess: Are you behind a proxy? If so, it's a known and
never fixed bug from Python 1.5 times

You might also try to use PyCurl.

Andreas

>
> When I post using my python client the headers get there, but the body
> of the message does not.
>
> My code is pretty standard and has the format:
>
>
> httplib.HTTPSConnection.debuglevel = 1
> connection = httplib.HTTPSConnection(host_name, key_file = key,
> cert_file = cert)
> connection.putrequest("POST", path)
> connection.putheader("Content-Length", str(len(body)))
>
> ...(some more headers)...
>
> connection.endheaders()
> connection.send(body)
>
> response = connection.getresponse()
> connection.close()
>
> (some code has been removed for clarity)..
>
> I can see in the debug messages the body getting sent, but nothing
> arrives at
> the server...
>
> I think I would understand whats going on better if I knew how Python
> uses the
> underlying socket - does it
>
> a) open the socket, send the header & body together or
> b) send the header, wait, then send the body?
>
> I think the answer to this question solve my problem - can anyone help?
>
> Thanks.
>
> p.s. I'm using Python 2.3.3 [GCC 3.3.3 (SuseLinx)]
>


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQBC1Yh5HJdudm4KnO0RAn32AKDhuPqPLTUh8Cz3vRNtcM RZDfHSUgCeMzfU
zfNiyFIHDcosx5aNLAWLuNM=
=aJGI
-----END PGP SIGNATURE-----

 
Reply With Quote
 
Peter A. Schott
Guest
Posts: n/a
 
      07-14-2005
Have you tried using pycurl? That may be an easier way to port over your CURL
code directly. Relatively easy to use, too.

-Pete

(E-Mail Removed) wrote:

> Hi,
>
> Sorry to post what might seem like a trivial problem here, but its
> driving me mad!
>
> I have a simple https client that uses httplib to post data to a web
> server.
>
> When I post over http & https using curl the data is recieved by the
> web server with no problems.
>
> When I post using my python client the headers get there, but the body
> of the message does not.
>
> My code is pretty standard and has the format:
>
>
> httplib.HTTPSConnection.debuglevel = 1
> connection = httplib.HTTPSConnection(host_name, key_file = key,
> cert_file = cert)
> connection.putrequest("POST", path)
> connection.putheader("Content-Length", str(len(body)))
>
> ...(some more headers)...
>
> connection.endheaders()
> connection.send(body)
>
> response = connection.getresponse()
> connection.close()
>
> (some code has been removed for clarity)..
>
> I can see in the debug messages the body getting sent, but nothing
> arrives at
> the server...
>
> I think I would understand whats going on better if I knew how Python
> uses the
> underlying socket - does it
>
> a) open the socket, send the header & body together or
> b) send the header, wait, then send the body?
>
> I think the answer to this question solve my problem - can anyone help?
>
> Thanks.
>
> p.s. I'm using Python 2.3.3 [GCC 3.3.3 (SuseLinx)]


 
Reply With Quote
 
michaelparkin@gmail.com
Guest
Posts: n/a
 
      07-22-2005
Thanks for the replies, Andreas and Peter.

Andreas Kostyrka wrote:

<snip>

> Just a curious guess: Are you behind a proxy? If so, it's a known and
> never fixed bug from Python 1.5 times


No, I'm not behind a proxy - the server is on the same PC as my client
(while I'm testing!).

> You might also try to use PyCurl.


I've quickly read about PyCurl, but it only seems to allow HTTP HEAD,
GET, POST and PUT methods - though please correct me if I'm wrong.

I'd like to use httpLib in Python as I also need the DELETE method and
the possibility of adding some extra headers and extra methods (I'm
working on something like this : http://sw.nokia.com/uriqa/URIQA.html
that allows MGET, MPUT, MPOST, etc.).

I've done some more testing and still can't work out why Python
operates differently to other http clients... any ideas?

Thanks,

Michael.

<snip>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Doing a serverside post and ending up at post server John Dalberg ASP .Net 8 09-23-2004 09:17 PM
Modelsim post place and route/Post Translate issues Sridhar Hegde VHDL 2 09-13-2004 02:43 PM
wlftg17 modelsim temp file beeing too big (corret post, ignore the old post) Oleg VHDL 0 04-05-2004 03:31 AM
Post post post. Shel-hed Computer Support 2 11-08-2003 07:41 AM
asp.net C# payflowlink post and capturing silent post khawar ASP .Net 2 10-28-2003 08:41 PM



Advertisments