2012-08-06 8 views
16

Próbuję przepisać niektóre stary kod Pythona z modułem żądania. Celem jest przesłanie załącznika. serwer pocztowy wymaga następującą specyfikację:Jak określić żądania Pythona http umieścić ciało?

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

stary kod, który działa:

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'}) 

Nie znaleziono sposobu korzystania z części ciała w prośby.

udało mi się wykonać następujące czynności:

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

Ale nie mam pojęcia, jak określić część ciała z zawartością pliku.

Dzięki za pomoc. Omer.

Odpowiedz

37

Cytując z docs

danych - (opcjonalnie) Słownik lub bajtów do wysłania w ciele Zamówienie.

Więc to powinny praca (nie testowane):

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

Wielkie dzięki! –

0

mam tę rzecz pracował przy użyciu Python i to moduł żądania. Dzięki temu możemy zapewnić zawartość pliku jako wartość wejściową strony. Zobacz kod poniżej,

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, auth=('Username', 'Password')) 

print (res.status_code) 
print (res.raise_for_status()) 

Możesz zapytać, czy masz jakiekolwiek wątpliwości.

Powiązane problemy