FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema al hacer Post desde Delphi XE contra una API en Java
Hola amigos, estoy teniendo problemas para conectar con una API hecha en java.
El problema solo me ocurre en Delphi XE, pues si utilizo Postman o similares, funciona perfecto. La llamada a la API se realiza mediante un POST, y como parámetros se le pasan un archivo pdf y un json (adjunto captura de Postman, donde funciona correctamente) En delphi lo he intentado de varias maneras, siempre devolviéndome el mismo error: "La etiqueta 'metadata' debe contener un JSON." Opcion 1 Código:
postData := TIdMultiPartFormDataStream.Create(); IdHTTP.Request.ContentType := 'multipart/form-data'; jsonObject := TJSONObject.Create; jsonObject.AddPair('company_id','123'); jsonObject.AddPair('producer_id','456'); lRequest := TStringStream.Create(jsonObject.ToString, TEncoding.UTF8); postData.AddFormField('metadata','application/json','utf-8',lRequest); postData.AddFile('files',rutaFichero,'application/pdf'); IdHTTP.Post(Url,postData,LResponse); Opcion 2 Código:
MyJson:='{' + CRLF + ' "company_id": "123",' + CRLF + ' "producer_id": "456"' + CRLF + '}'; postData.AddFormField('metadata','{"company_id":"123","producer_id":"456"}'); //postData.AddFormField('metadata',MyJson); postData.AddFile('files',rutaFichero,'application/pdf'); IdHTTP.Post(Url,postData,LResponse); Me da la sensación que es un problema en como Delphi crea el string y luego lo recibe Java. He probado con conversiones del string de la variable metadata a utf8 string y similares, pero tampoco funciona. Siempre que he utilizado alguna API me ha funcionado con la opcion 1 (enviar memorystream), incluso alguna API que hemos desarrollado en java, de esta manera funcionaba. Muchas gracias |
#2
|
||||
|
||||
Te recomiendo utilizar RESTDebugger, haz las pruebas y ya cuando te funcione solamente copia los componentes a tu formulario y listo.
https://www.embarcadero.com/free-tools/rest-debugger |
#3
|
|||
|
|||
Cita:
En rest-debugger no puedes utilizar el content-type multipart/form-data , con lo que no me sirve ( ya lo estuve utilizando pero no se puede simular la llamada que necesito ) |
#4
|
||||
|
||||
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
hacer post en java a una pagina especifica | gulder | JAVA | 0 | 25-04-2016 05:55:57 |
Problema al hacer post en el insert 127 | jhandervel | Conexión con bases de datos | 1 | 02-12-2013 22:17:00 |
¿Como abrir una pagina web desde Delphi enviandole parametros POST? | flystar | Varios | 8 | 09-07-2010 00:13:49 |
Acelerar apertura de consulta desde Delphi contra Access | Sergiov | SQL | 4 | 13-04-2007 11:42:59 |
Enviar Java desde Delphi | mazinger | Internet | 8 | 13-05-2006 20:19:19 |
|