Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send a HTTP POST with Python 2.7

I'm trying to send a HTTP POST request with Python. I can get it to work with 3.0, but I couldn't find a good example on 2.7.

hdr = {"content-type": "application/json"}
payload= ("<html><body><h1>Sorry it's not Friday yet</h1> </body></html>")
r = requests.post("http://my-url/api/Html", json={"HTML": payload})

with open ('c:/temp/a.pdf', 'wb') as f:
    b64str = json.loads(r.text)['BinaryData']  #base 64 string is in BinaryData attr
    binStr = binascii.a2b_base64(b64str)  #convert base64 string to binary
    f.write(binStr)

The api takes a json in this format:

{
  HTML : "a html string"
}

and returns a json in this format:

{
    BinaryData: 'base64 encoded string'      
}
like image 811
Ray Cheng Avatar asked Sep 08 '26 11:09

Ray Cheng


1 Answers

In Python 2.x it should be like this

import json
import httplib

body =("<html><body><h1>Sorry it's not Friday yet</h1> </body></html>")
payload = {'HTML' : body}
hdr = {"content-type": "application/json"}

conn = httplib.HTTPConnection('my-url')
conn.request('POST', '/api/Html', json.dumps(payload), hdr)
response = conn.getresponse()
data = response.read() # same as r.text in 3.x
like image 136
fn. Avatar answered Sep 11 '26 02:09

fn.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!