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.