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.