Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener json de una URL (https://www.clubdelphi.com/foros/showthread.php?t=94470)

Soa Pelaez 25-02-2020 04:17:20

Obtener json de una URL
 
Buenas delphiteros.

Necesito realizar una aplicación que me obtenga un json de una url pero no logro hacerlo, use el componente de Indy IdHTTP pero al ingresar la URL y ejecutar el aplicativo me sale un error de Could not load library SSL, hay alguna otra forma de hacerlo o alguien que tenga un ejemplo que le funcione para guiarme, a parte de leer de la URL el json, luego debo enviar un json modificado desde el aplicativo a otra URL. Estoy trabajando con XE8 y la versión de indy 10

Espero puedan ayudarme.

Gracias.

ElKurgan 25-02-2020 07:26:24

Sobre el problema de que no puede cargar el Indy SSL, a lo mejor te puede ayudar este hilo, donde se trató el mismo problema

Un saludo

Neftali [Germán.Estévez] 25-02-2020 08:58:25

Cita:

Empezado por Soa Pelaez (Mensaje 535900)
Necesito realizar una aplicación que me obtenga un json de una url pero no logro hacerlo, use el componente de Indy IdHTTP pero al ingresar la URL y ejecutar el aplicativo me sale un error de Could not load library SSL, ...

En mi blog tienes varios ejemplos de descarega de ficheros JSON utilizando Delphi + Indy + SSL.
Revísalos y échale un vistazo al código. Por ejemplo estas 2.

https://neftali.clubdelphi.com/obten...de-una-cancin/
https://neftali.clubdelphi.com/tidht...es-de-una-web/

De todas formas, para las nuevas versiones de Windows es mejor utilizar el componente THTTPClient para descargas, porque encapsula el acceso a SSL y simplifica el trema de la descarga.

Soa Pelaez 26-02-2020 02:39:36

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 535903)
En mi blog tienes varios ejemplos de descarega de ficheros JSON utilizando Delphi + Indy + SSL.
Revísalos y échale un vistazo al código. Por ejemplo estas 2.

https://neftali.clubdelphi.com/obten...de-una-cancin/
https://neftali.clubdelphi.com/tidht...es-de-una-web/

De todas formas, para las nuevas versiones de Windows es mejor utilizar el componente THTTPClient para descargas, porque encapsula el acceso a SSL y simplifica el trema de la descarga.

Muchas gracias, probaré lo que me adjuntaste y tratare de hacerlo con lo que me dices al final THTTPClient .

look 26-02-2020 18:24:56

Cita:

Empezado por Soa Pelaez (Mensaje 535908)
Muchas gracias, probaré lo que me adjuntaste y tratare de hacerlo con lo que me dices al final THTTPClient .

Código Delphi [-]
function GetJSON(test: string): string;
var
  lHTTP: TIdHTTP;
  lParamList: TStringList;
begin

  lParamList := TStringList.Create;
  lParamList.Add('dummy='+test);

  lHTTP := TIdHTTP.Create;
  try
    Result := lHTTP.Post('http://........./root/demo/GetJSON.php' , lParamList);
  finally
    lHTTP.Free;
    lParamList.Free;
  end;

end;

Neftali [Germán.Estévez] 26-02-2020 20:50:58

El problema es que a ese código [look] le falta la parte de acceder a una dirección HTTPS.
Para hacerlo (a diferencia d una HTTP) tienes que usar un componente TIdSSLIOHandlerSocket que se "engancha" con el TidHttp y que es el que se encarga de cargar las DLL's para poder usar SSL.

look 26-02-2020 20:54:09

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 535951)
El problema es que a ese código [look] le falta la parte de acceder a una dirección HTTPS.
Para hacerlo (a diferencia d una HTTP) tienes que usar un componente TIdSSLIOHandlerSocket que se "engancha" con el TidHttp y que es el que se encarga de cargar las DLL's para poder usar SSL.

hola, y si utilizamos mejor un NetHTTPClient ???

Código Delphi [-]
function GetJSON(test: string): string;
var
  NetHTTP: TNetHTTPClient;
  lParamList: TStringList;
begin

  lParamList := TStringList.Create;
  lParamList.Add('dummy='+test);
  NetHTTP := TNetHTTPClient.Create(nil);
  try
    Result := NetHTTP.Post('https://........./root/demo/GetJSON.php', lParamList).ContentAsString;
  finally
    NetHTTP.Free;
    lParamList.Free;
  end;

end;

Neftali [Germán.Estévez] 26-02-2020 23:17:55

Cita:

Empezado por look (Mensaje 535953)
hola, y si utilizamos mejor un NetHTTPClient ???


Mucho mejor.

A ese me refería cuando dije THHPClient, que deja al sistema la gestión de HTTP/HTTPS.


La franja horaria es GMT +2. Ahora son las 20:42:34.

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