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} ) 
1

I 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.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy