6

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' } 

2 Answers 2

7

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 
Sign up to request clarification or add additional context in comments.

Comments

4

The standard way is with the urllib2 module

from urllib import urlencode import urllib2 def http_post(url, data): post = urlencode(data) req = urllib2.Request(url, post) response = urllib2.urlopen(req) return response.read() 

1 Comment

For the data parameter, you'd typically pass a dict.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.