Urlfetch blobs multipart/m
Frecuentes
Visto 789 veces
1
Estoy tratando de usar UlrFetch para enviar datos CSV a los informes de Zoho. Estoy usando el siguiente código:
function doImport(tabla,file) {
var url="https://reportsapi.zoho.com/api/xxxxxxxx/yyyyyyyyyyy/"+tabla;
var ticket="zzzzzzzzzzzzzzzz" ;//getTicket();
url=url + "?ZOHO_ACTION=IMPORT&ZOHO_OUTPUT_FORMAT=XML&ZOHO_ERROR_FORMAT=json&ZOHO_API_VERSION=1.0"
var params={"ZOHO_API_KEY":"vvvvvvvvvvvvvvvvvvvvvv"
,"ticket":ticket
,"ZOHO_FILE":file
,"ZOHO_IMPORT_TYPE":"APPEND"
,"ZOHO_ON_IMPORT_ERROR":"ABORT"
,"ZOHO_AUTO_IDENTIFY":"true"
,"ZOHO_CREATE_TABLE":"false"
,"ZOHO_DATE_FORMAT":"dd-MM-YYYY"
,"ZOHO_DELIMITER":"0"
};
var options =
{
"method" : "post",
"payload" : params,
"contentType": "multipart/form-data"
};
var response=UrlFetchApp.fetch(url, options);
var tableDataString=response.getContentText();
expireTicket(ticket);
Logger.log(tableDataString);
return tableDataString;
}
Sin embargo, los datos no se envían en el formato multiforme correcto (obteniendo el estado de error 500). Este problema se remonta a principios de 2011. Por favor, uno o dos ejemplos de cómo enviar archivos blob en formato multipart/form-data serían bienvenidos.
Muchas Gracias
2 Respuestas
2
Para la carga útil, lo está pasando como un Object
, que parece correcto. Esto se interpretará como un formulario HTTP (que desea).
Para corregir su secuencia de comandos, intente lo siguiente:
Asegúrese de que el valor que está utilizando para
ZOHO_FILE
es una gota. Esto asegura que el formulario HTTP se envíe automáticamente con:Content-Type: multipart/form-data; boundary=[automatically determined]
No especificar
contentType
para HTTP POST. Esto permite que UrlFetchApp use automáticamente su propiocontentType
valor, que incluye elboundary
campo. (Detalle menor: está bien especificar el tipo de contenido en el blob en sí, pero no en la solicitud de publicación general. Esto permite especificar el tipo de contenido de cada blob dentro de la publicación, si le interesa).
Respondido el 11 de junio de 12 a las 18:06
1
UrlFetchApp utilizará la codificación de datos de formulario/multiparte automáticamente si pasa un blob como valor de carga útil. Es posible que necesite usar:
"ZOHO_FILE": file.getBlob()
contestado el 24 de mayo de 12 a las 19:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas http-headers google-apps-script or haz tu propia pregunta.
UrlFetch ahora puede aceptar un byte[] como valor de carga útil para el objeto del argumento. Blob.getBytes() funciona lo suficiente para eso. En términos de una solicitud de varias partes, según tengo entendido, eso no es binario. Así que no creo que puedas mezclar los dos (en ninguna plataforma) como sugieres. ¿Cuál es la URL de la API con la que intenta interactuar y cómo? - mzimmerman
Gracias por su respuesta. Estoy usando la API descrita en zohoreportsapi.wiki.zoho.com/Importing-CSV-File.html y funciona desde otras plataformas. ¿Tiene un ejemplo de envío de datos de formulario de varias partes? - lanzalibre