I'm trying to rewrite some old python code with requests module. The purpose is to upload an attachment. The mail server requires the following specification :
Old code which works:
h = httplib2.Http() resp, content = h.request(' "PUT", body=file(filepath).read(), headers={'content-type':'text/plain'} ) Didn't find how to use the body part in requests.
I managed to do the following:
response = requests.put(' data={"file":filepath}, auth=('omer', 'b01ad0ce') ) But have no idea how to specify the body part with the content of the file.
Thanks for your help. Omer.
2 Answers
Quoting from the docs
data – (optional) Dictionary or bytes to send in the body of the Request.
So this should work (not tested):
filepath = 'yourfilename.txt' with open(filepath) as fh: mydata = fh.read() response = requests.put(' data=mydata, auth=('omer', 'b01ad0ce'), headers={'content-type':'text/plain'}, params={'file': filepath} ) 1I got this thing worked using Python and it's request module. With this we can provide a file content as page input value. See code below,
import json import requests url = ' headers = {'Content-Type': "application/json", 'Accept': "application/json"} f = open("file.html", "r") html = f.read() data={} data['id'] = "87440" data['type']="page" data['title']="Data Page" data['space']={"key":"AB"} data['body'] = {"storage":{"representation":"storage"}} data['version']={"number":4} print(data) data['body']['storage']['value'] = html print(data) res = requests.put(url, json=data, headers=headers, auth=('Username', 'Password')) print(res.status_code) print(res.raise_for_status()) Feel free to ask if you have got any doubt.
NB: In this case the body of the request is being passed to the json kwarg.