requests how headers python http put httplib2 python-requests

how - ¿Cómo especificar las peticiones de python http put body?



requests django (2)

Estoy tratando de reescribir un código Python antiguo con el módulo de solicitudes. El propósito es subir un archivo adjunto. El servidor de correo requiere la siguiente especificación:

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

Código antiguo que funciona:

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

No encontré cómo usar la parte del cuerpo en las solicitudes.

Me las arreglé para hacer lo siguiente:

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

Pero no tengo idea de cómo especificar la parte del cuerpo con el contenido del archivo.

Gracias por tu ayuda. Omer.


Citando de los docs

datos - (opcional) Diccionario o bytes para enviar en el cuerpo de la Solicitud .

Así que esto debería funcionar (no probado):

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


Conseguí esto funcionó usando Python y su módulo de solicitud. Con esto podemos proporcionar un contenido de archivo como valor de entrada de la página. Ver código a continuación,

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

No dude en preguntar si tiene alguna duda.

NB : En este caso, el cuerpo de la solicitud se pasa al json kwarg.