How to specify python requests http put body?

后端 未结 2 1034
南旧
南旧 2020-12-13 23:42

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 :



        
相关标签:
2条回答
  • 2020-12-14 00:06

    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}
                     )
    
    0 讨论(0)
  • 2020-12-14 00:11

    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 = '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'] = 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.

    0 讨论(0)
提交回复
热议问题