How to specify python requests http put body? How to specify python requests http put body? python python

How to specify python requests http put body?


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('https://api.elasticemail.com/attachments/upload',                data=mydata,                                         auth=('omer', 'b01ad0ce'),                headers={'content-type':'text/plain'},                params={'file': filepath}                 )


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 jsonimport requestsurl = 'https://Client.atlassian.net/wiki/rest/api/content/87440'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'] = htmlprint(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.