Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-08-2023
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 85
Poder: 7
pablog2k Va por buen camino
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);
Tambien he probado a enviar el json directo, en formato json 'simulado' (variable MyJson) y en string en vez de convertirlo a StringStream, pero tampoco funciona

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);
También he probado en vez de usar las librerías INDY, utilizar las librerias WinInet (no adjunto código porque no creo que sea problema de librería), pero sigue fallando.

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
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
hacer post en java a una pagina especifica gulder JAVA 0 25-04-2016 04:55:57
Problema al hacer post en el insert 127 jhandervel Conexión con bases de datos 1 02-12-2013 21:17:00
¿Como abrir una pagina web desde Delphi enviandole parametros POST? flystar Varios 8 08-07-2010 23:13:49
Acelerar apertura de consulta desde Delphi contra Access Sergiov SQL 4 13-04-2007 10:42:59
Enviar Java desde Delphi mazinger Internet 8 13-05-2006 19:19:19


La franja horaria es GMT +2. Ahora son las 12:30:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi