How to Specify Python Requests Http Put Body?

How to Specify Python Requests Http Put Body?

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

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

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.