web-dev-qa-db-de.com

Wie spezifiziere ich python fordert http put body an?

Ich versuche, einen alten python Code mit dem Anforderungsmodul umzuschreiben. Der Zweck ist das Hochladen eines Anhangs. Der Mailserver benötigt die folgende Spezifikation:

https://api.elasticemail.com/attachments/upload?username=yourusername&api_key=yourapikey&file=yourfilename

Alter Code, der funktioniert:

h = httplib2.Http()        
        resp, content = h.request('https://api.elasticemail.com/attachments/upload?username=omer&api_key=b01ad0ce&file=tmp.txt', 
        "PUT", body=file(filepath).read(), 
        headers={'content-type':'text/plain'} )

Es wurde nicht gefunden, wie der Körperteil in Anfragen verwendet werden kann.

Ich habe folgendes geschafft:

 response = requests.put('https://api.elasticemail.com/attachments/upload',
                    data={"file":filepath},                         
                     auth=('omer', 'b01ad0ce')                  
                     )

Aber ich habe keine Ahnung, wie ich den Hauptteil mit dem Inhalt der Datei angeben soll.

Danke für Ihre Hilfe. Omer.

27
omer bach

Zitat aus dem docs

Daten - (optional) Wörterbuch oder Bytes, die im Hauptteil der Anforderung gesendet werden sollen .

Also das sollte funktionieren (nicht getestet):

 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}
                 )
54
raben

Ich habe dieses Ding mit Python und seinem Anforderungsmodul bearbeitet. Damit können wir einen Dateiinhalt als Seiteneingabewert bereitstellen. Siehe Code unten,

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())

Fühlen Sie sich frei zu fragen, ob Sie irgendwelche Zweifel haben.


NB : In diesem Fall wird der Hauptteil der Anforderung an das json kwarg übergeben.

3
Ashfaq