Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #42221 > unrolled thread

Re: Curl and python httplib?

Started byChris Rebert <clp2@rebertia.com>
First post2013-03-28 21:58 -0700
Last post2013-03-28 21:58 -0700
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Curl and python httplib? Chris Rebert <clp2@rebertia.com> - 2013-03-28 21:58 -0700

#42221 — Re: Curl and python httplib?

FromChris Rebert <clp2@rebertia.com>
Date2013-03-28 21:58 -0700
SubjectRe: Curl and python httplib?
Message-ID<mailman.3935.1364533107.2939.python-list@python.org>
On Wed, Mar 27, 2013 at 7:54 PM, 小学园PHP <xxy-php@qq.com> wrote:
> Guys,
>
> I take a project that need send request to Hadoop by curl.
> But now, the curl and pycurl can't satisfy my project. So i need use the
> powerful httplib.

I would say that `requests`
(http://docs.python-requests.org/en/latest/ ) is generally preferable
to httplib these days.

> But failed.
>
> my curl request:
> curl -i -X PUT "http://localhost:50070/webhdfs/v1/levi/7?op=CREATE"
>
> my return:
> HTTP/1.1 307 TEMPORARY_REDIRECT
> Content-Type: application/octet-stream
> Location:
> http://58.53.211.47:50075/webhdfs/v1/levi/7?op=CREATE&overwrite=false
> Content-Length: 0
> Server: Jetty(6.1.26)
>
> Now, i change the curl request to httplib:
> import httplib
> import urllib
>
> params=urllib.urlencode({"@op":"CREATE","@user.name":"levi"})
> headers={"Content-type": "application/x-www-form-urlencoded","Accept":
> "text/plain"}
> conn=httplib.HTTPConnection("localhost:50070")
> conn.request("PUT","/webhdfs/v1/levi/7.txt",params,headers)
> response=conn.getresponse()
> print response.status, response.reason
> data=response.read()
> print data
> conn.close()
>
> But it failed:
> #print response.status, response.reason
> 500 Internal Server Error
> #print data
> '{"RemoteException":{"exception":"WebApplicationException","javaClassName":"javax.ws.rs.WebApplicationException","message":null}}'
>
> Who knows why? It's OK when i use curl, so where is the problem in httplib
> method?
> Or some other reasons?

It's rather hard to say when neither the base URL, nor querystring
parameters, nor request body are the same between your curl example
and your httplib example, making them rather incomparable.
Part of the problem may be that you are passing what may have been
intended as querystring parameters (`params`) as the `body` argument
to HTTPConnection.request().
In any case, I would suggest trying to use the `requests` library instead.

Cheers,
Chris

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web