![]() |
Ejemplos de uso del componente tidHTTP de la suite Indy
A continuación, les muestro ejemplos sobre cómo utilizar el componente tidHTTP de la suite de componentes ![]() En caso de que necesiten información sobre su uso y ejemplos detallados lo tienen ![]() -Tips a tener en cuenta si se quiere acceder a una página segura: En este ![]() Recordar que en este caso en el evento OnCreate hay que indicarle la rutas de las ![]() IdOpenSSLSetLibPath(tpath.GetDocumentsPath); Indicar en el USES la unit IdSSLOpenSSLHeaders Si se han cargado las librerías correctamente pueden obtener su versión de esta forma: label1.Text:=IdSSLOpenSSL.OpenSSLVersion y para obtener los errores en tiempo de ejecución tienen que indicar lo siguiente: IdSSLOpenSSLHeaders.WhichFailedToLoad(); EJEMPLOS DE PROGRAMACIÓN: -Bajar un archivo utilizando tFileStream PROCEDURE DownloadFile(URL, Directorio, FileName: STRING); VAR Stream: TFileStream; BEGIN IF IdHTTP1.Connected THEN IdHTTP1.Disconnect; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.Connection := 'keep-alive'; IdHTTP1.Request.ContentType := ''; Stream := TFileStream.Create(Tpath.Combine(Directorio, FileName), fmCreate); TRY Stream.Position := 0; IdHTTP1.Get(URL, Stream); FINALLY Stream.Free; END; END; === -Bajar el archivo "fichero.txt" utilizando tMemoryStream PROCEDURE DownloadFile(URL, Directorio, FileName: STRING); VAR Stream: TMemoryStream; BEGIN IF IdHTTP1.Connected THEN IdHTTP1.Disconnect; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.Connection := 'keep-alive'; IdHTTP1.Request.ContentType := ''; Stream := TmemoryStream.Create; TRY Stream.Position := 0; IdHTTP1.Get('http://www.miweb.com/fichero.txt', Stream); Stream.SaveToFile(Tpath.Combine(Directorio, FileName)); FINALLY Stream.Free; END; END; === -Obtener una imagen de una URL y guardarla en un tImage PROCEDURE LoadFromURL(URL: STRING; VAR image1: tImage); VAR Stream: TMemoryStream; IdH: TIdHTTP; BEGIN Stream := TMemoryStream.Create; TRY IdH := TIdHTTP.Create(NIL); IdH.AllowCookies := true; TRY IdH.Get(Trim(URL), Stream); EXCEPT // Error al descargar la imagen // .. Volcarlo al log END; Stream.Position := 0; image1.bitmap.loadfromstream(Stream); FINALLY IdH.Free; Stream.Free; END; END; ====== - Enviar un fichero y varios parámetros a una web con POST FUNCTION EnviarFicheroAUnaWeb: STRING; CONST Codificacion = 'ISO-8859-1'; // 'ISO-8859-1'; VAR // esta en la unit system.classes ResponseStream: TStringStream; // esta en la unit IdMultipartFormData Params: TIdMultipartFormDataStream; fichero: STRING; Path, Texto: STRING; BEGIN Result := '0'; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.BasicAuthentication := False; // usar 'multipart/form-data' si se envian ficheros // usar application/x-www-form-urlencoded si NO se envian ficheros IdHTTP1.Request.ContentType := 'multipart/form-data'; IdHTTP1.Request.UserAgent := ConstanteUserAgent; ResponseStream := TStringStream.Create(''); TRY Params := TIdMultipartFormDataStream.Create; TRY Params.AddFormField('usu', 'nombre1', Codificacion); Params.AddFormField('ruta', '123', Codificacion); Path := DirectorioLocal; fichero := Tpath.Combine(Path, 'index.html'); IF tfile.Exists(fichero) THEN BEGIN Params.AddFile('fich1', fichero); END; // ====================================== // añadiendo 'utf-8', 'application/octet-stream').ContentTransfer := '8bit'; // evita que el valor de los campos se trunque a 75 caracteres // evitara muchos problemas // Params.AddFormField('metadata', 'valor', 'utf-8', 'application/octet-stream').ContentTransfer := '8bit'; // ====================================== TRY ResponseStream.Position:=0; IdHTTP1.Post('https://www.miweb.com/subir.php', Params, ResponseStream); // IdSSLOpenSSLHeaders.WhichFailedToLoad(); EXCEPT ON E: Exception DO BEGIN IF ansipos('not load SSL', E.Message) > 0 THEN BEGIN SHOWMESSAGE('No se puede cargar SSL'); END ELSE BEGIN showmessage(Error al enviar el archivo: ' + E.Message); END; END; END; Result := ResponseStream.DataString; FINALLY Params.Free; END; FINALLY ResponseStream.Free; END; END; ======== -Enviar datos por POST a una web (Los datos los recoge un programa hecho en PHP) FUNCTION EnviarNombreUsuario(usu: STRING): STRING; CONST Codificacion = 'UTF8'; // 'ISO-8859-1'; VAR // uses IdHTTP, IdMultipartFormData; ResponseStream: TStringStream; Params: TIdMultipartFormDataStream; datos: STRING; BEGIN Result := '0'; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.BasicAuthentication := False; // application/x-www-form-urlencoded //si no se agregan archivos // multipart/form-data //si se agregan archivos IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded '; IdHTTP1.Request.UserAgent := ConstanteUserAgent; IdHTTP1.Request.ContentEncoding := Codificacion; // 'ISO-8859-1' ; ResponseStream := TStringStream.Create(''); TRY Params := TIdMultipartFormDataStream.Create; TRY Params.AddFormField('Usu', usu, 'utf-8', 'application/octet-stream').ContentTransfer := '8bit'; TRY ResponseStream.Position := 0; IdHTTP1.Post('https://www.miweb.com/subir.php', Params, ResponseStream); EXCEPT ON E: Exception DO BEGIN //excepcion silenciosa Abort; END; END; Result := ResponseStream.DataString; FINALLY Params.Free; END; FINALLY ResponseStream.Free; END; END; ======= - Obtener nuestra IP pública function IP_Publica: string; function EsNumerico( S: string ): Boolean; begin Result := false; if ( Length( S ) > 0 ) then case S[1] of '0'..'9': Result := True; end; end; var HTMLBody: string; i: Integer; IdHTTP: TIdHTTP; begin Result := ''; // ¿Estamos conectados a Internet? if WinInet.InternetGetConnectedState( nil, 0 ) then begin IdHTTP := TIdHTTP.Create( Application ); try HTMLBody := IdHTTP.Get( 'http://checkip.dyndns.org/' ); for i := 0 to Length( HTMLBody ) - 1 do begin if EsNumerico( HTMLBody[i] ) or ( HTMLBody[i] = '.' ) then Result := Result + HTMLBody[i]; end; finally IdHTTP.Free; end; end; end; ========== -Enviar datos a una web con POST siendo los Parámetros de tipo StringList FUNCTION EnviarNombreUsuario(usu: STRING): STRING; CONST Codificacion = 'UTF8'; // 'ISO-8859-1'; VAR // uses IdHTTP, IdMultipartFormData; ResponseStream: TStringStream; Params: tStringList; BEGIN Result := '0'; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.BasicAuthentication := False; // application/x-www-form-urlencoded //si no se agregan archivos // multipart/form-data //si se agregan archivos IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded '; IdHTTP1.Request.UserAgent := ConstanteUserAgent; IdHTTP1.Request.ContentEncoding := Codificacion; // 'ISO-8859-1' ; ResponseStream := TStringStream.Create(''); TRY Params := tStringList.Create; TRY Params.Add('Usu=123'); TRY ResponseStream.Position := 0; IdHTTP1.Post('https://www.miweb.com/subir.php', Params, ResponseStream); EXCEPT ON E: Exception DO BEGIN //excepcion silenciosa Abort; END; END; Result := ResponseStream.DataString; FINALLY Params.Free; END; FINALLY ResponseStream.Free; END; END; Aquí tienen más ejemplos de uso: - ![]() - ![]() - ![]() Si les ha gustado este post y quieren recibir un email cada vez que publique uno nuevo ![]() Suscribirse : ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz