Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   GET - POST Componentes REST (Client-Request-Response) (https://www.clubdelphi.com/foros/showthread.php?t=96667)

jmbarrio 09-04-2024 17:20:48

GET - POST Componentes REST (Client-Request-Response)
 
Buenas tardes,
estoy desarrollando una aplicación en android con componentes REST.
Con el method rmGET en el Request me traigo un fichero Json en el Response sin problemas.

Mi pregunta es si quiero enviar un Json, tendría que cambiar el method del Reques a rmPOST, ¿no? y por lo que he leído en la propiedad Body le puedo enviar un fichero con el siguiente codigo

Código Delphi [-]
var
  Contenido:Tstream;
  RESTRequest.Body.Add(Contenido,TRestContentType.ctAPPLICATION.XML)

¿para Json sería así?
Código Delphi [-]
RESTRequest.Body.Add(Contenido,TRestContentType.ctAPPLICATION.JSON)

Por otro lado como puedo crear el Json, ¿Qué métodos o funciones hay en delphi? ¿el contenido de este Json iría a la variable Contenido:TStream?

Muchas gracias, un saludo.

Neftali [Germán.Estévez] 09-04-2024 20:26:59

Cita:

Empezado por jmbarrio (Mensaje 555296)
Buenas tardes,

Buenas tardes.


Cita:

Empezado por jmbarrio (Mensaje 555296)
Mi pregunta es si quiero enviar un Json, tendría que cambiar el method del Reques a rmPOST, ¿no? y por lo que he leído en la propiedad Body le puedo enviar un fichero con el siguiente codigo


Bueno el método a utilizar es el que te de la documentación de la API REST a la que estás llamando, pero si, lo habitual es usar POST.



Cita:

Empezado por jmbarrio (Mensaje 555296)
¿para Json sería así?

Para JSON utiliza:
Código Delphi [-]
RESTRequest1.AddBody(miparametro, TRESTContentType.ctAPPLICATION_JSON);



Cita:

Empezado por jmbarrio (Mensaje 555296)
Por otro lado como puedo crear el Json, ¿Qué métodos o funciones hay en delphi? ¿el contenido de este Json iría a la variable Contenido:TStream?


Tienes clases para tratar foirmato JSON; Para leer, crear,...
Revisa la docwiki de embarcadero:
http://docwiki.embarcadero.com/RADSt...andria/en/JSON
http://docwiki.embarcadero.com/Libra...en/System.JSON


Además si buscas en el foro encontrarás muchos hilos con código de ejemplo, para "montar" el JSON que necesitas, como para llamar a una API REST con los componentes que estás utilizando; Por ejemplo esto (aunque si buscas encontrarás más):
https://www.clubdelphi.com/foros/showthread.php?t=94732
https://clubdelphi.com/foros/showthread.php?t=96328

jmbarrio 10-04-2024 09:03:51

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555306)
Buenas tardes.

Bueno el método a utilizar es el que te de la documentación de la API REST a la que estás llamando, pero si, lo habitual es usar POST.

Para JSON utiliza:
Código Delphi [-]
RESTRequest1.AddBody(miparametro, TRESTContentType.ctAPPLICATION_JSON);

Tienes clases para tratar foirmato JSON; Para leer, crear,...
Revisa la docwiki de embarcadero:
http://docwiki.embarcadero.com/RADSt...andria/en/JSON
http://docwiki.embarcadero.com/Libra...en/System.JSON

Además si buscas en el foro encontrarás muchos hilos con código de ejemplo, para "montar" el JSON que necesitas, como para llamar a una API REST con los componentes que estás utilizando; Por ejemplo esto (aunque si buscas encontrarás más):
https://www.clubdelphi.com/foros/showthread.php?t=94732
https://clubdelphi.com/foros/showthread.php?t=96328

Buenos días, muchas gracias por la ayuda. Ya he preparado un código y estoy a la espera de ver que funciona.

Un saludo.

cloayza 10-04-2024 15:28:08

Estimado jmBarrio, yo hace algun tiempo estoy utilizando algunas librerias para todo lo que sea servidores REST y Clientes REST...Estas me han dado muy buenos resultados y a mi parecer son bastante simples de utilizar. Le dejo los enlaces para revisar.

Servidor REST utilizando Horse
Consumir servicios REST
Para trabar con JSON y Dataset

Saludos cordiales

jmbarrio 11-04-2024 11:51:54

Cita:

Empezado por cloayza (Mensaje 555321)
Estimado jmBarrio, yo hace algun tiempo estoy utilizando algunas librerias para todo lo que sea servidores REST y Clientes REST...Estas me han dado muy buenos resultados y a mi parecer son bastante simples de utilizar. Le dejo los enlaces para revisar.

Servidor REST utilizando Horse
Consumir servicios REST
Para trabar con JSON y Dataset

Saludos cordiales

Muchas gracias, un saludo.

jmbarrio 11-04-2024 13:23:14

Cita:

Empezado por cloayza (Mensaje 555321)
Estimado jmBarrio, yo hace algun tiempo estoy utilizando algunas librerias para todo lo que sea servidores REST y Clientes REST...Estas me han dado muy buenos resultados y a mi parecer son bastante simples de utilizar. Le dejo los enlaces para revisar.

Servidor REST utilizando Horse
Consumir servicios REST
Para trabar con JSON y Dataset

Saludos cordiales

Buenas tardes, me he bajado el tercer enlace el dataset-serialize-master, creo que es el que necesito.

Veo que hay un carpeta src con los ficheros DataSet.Serialize.Config.pas ............................... DataSet.Serialize.Utils.pas

Pero no tengo muy claro que tengo que hacer.

¿Agregarlas al proyecto y ya esta?

Muchas gracias, un cordial saludo.

cloayza 11-04-2024 15:55:49

Cita:

Empezado por jmbarrio (Mensaje 555347)
Buenas tardes, me he bajado el tercer enlace el dataset-serialize-master, creo que es el que necesito.

Veo que hay un carpeta src con los ficheros DataSet.Serialize.Config.pas ............................... DataSet.Serialize.Utils.pas

Pero no tengo muy claro que tengo que hacer.

¿Agregarlas al proyecto y ya esta?

Si, conveniente que la ruta a los fuentes este incorporada en el "Library Path" de delphi.

Tambien puedes realizar algunos ajustes a los parametros generales que se encuentran en :

Código Delphi [-]
     TDataSetSerializeConfig.GetInstance.CaseNameDefinition := TCaseNameDefinition.cndLower; 
     TDataSetSerializeConfig.GetInstance.Export.FormatDate:='dd/mm/yyyy';
     TDataSetSerializeConfig.GetInstance.Export.FormatDateTime := 'dd/mm/yyyy hh:nn:ss.zzz';
     TDataSetSerializeConfig.GetInstance.Export.TryConvertStringToJson:=true;
     TDataSetSerializeConfig.GetInstance.DateTimeIsISO8601:=false;

Mira los ejemplos que trae son muy didácticos.

Saludos cordiales


La franja horaria es GMT +2. Ahora son las 13:32:27.

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