PDA

Ver la Versión Completa : Obtener json de una URL


Soa Pelaez
25-02-2020, 04:17:20
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 (https://www.clubdelphi.com/foros/showthread.php?t=70314), donde se trató el mismo problema

Un saludo

Neftali [Germán.Estévez]
25-02-2020, 08:58:25
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/obtener-informacin-de-una-cancin/
https://neftali.clubdelphi.com/tidhttp-descargar-imagenes-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
;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/obtener-informacin-de-una-cancin/
https://neftali.clubdelphi.com/tidhttp-descargar-imagenes-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
Muchas gracias, probaré lo que me adjuntaste y tratare de hacerlo con lo que me dices al final THTTPClient .


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
;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 ???


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
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.