da qualche giorno quando cercavo di scaricare un file con indy su un computer mi appariva l'errore
HTTP/1.1 301 Moved Permanently
che avevo risolto aggiungendo il componente IdSSLIOHandlerSocketOpenSSL1 e collegandolo all'IdHTTP1 nella proprietà IOHandler, e aggiungendo questo codice:
IdHTTP1.HandleRedirects := True;
su quel computer ora non appare più quel codice di errore ma un altro
Could not load SSL library
mentre il primo codice di errore continua ad apparire su un altro computer senza apparente motivo. Il codice che uso è questo:
//scarica il file
try
//se il file e' gia' presente lo elimina
if FileExists(CartellaPrincipale+'map.osm') then DeleteFile(pchar(CartellaPrincipale + 'map.osm'));
//imposta il file scaricato
FileStream := TFileStream.Create(CartellaPrincipale + 'map.osm', fmCreate);
try
//invia la richiesta di download
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
//se si ottiene l'errore ERROR 001 --> HTTP/1.1 301 Moved Permanently
//aggiungere questa riga e il componente IdSSLIOHandlerSocketOpenSSL1
//da associare a IdHTTP1 nella proprieta' IOHandler
IdHTTP1.HandleRedirects := True;
//invia la richiesta di download
IdHTTP1.OnWork := ContenutoScaricato;
IdHTTP1.Get('http://api.openstreetmap.org/api/0.6/map?bbox='+Lon_min_TXT.Text+','+Lat_min_TXT.Text+','+Lon_Max_TXT.Text+','+Lat_Max_TXT.Text, FileStream);
//aggiorna la grafica
Application.ProcessMessages;
//apertura del file
if FileExists(CartellaPrincipale+'map.osm') then ShowMessage('Download completato!'+#13#10+#13#10+'Download completed')
else ShowMessage('File non scaricato'+#13#10+#13#10+'File not downloaded');
except on E: Exception do
begin
ShowMessage(' ERROR 001 --> '+e.ToString);
//se il file e' gia' presente lo elimina
if FileExists(CartellaPrincipale+'map.osm') then DeleteFile(pchar(CartellaPrincipale + 'map.osm'));
end;
end;
//libera la memoria
FileStream.Free;
except on E: Exception do
begin
ShowMessage(' ERROR 002 --> '+e.ToString);
//se il file e' gia' presente lo elimina
if FileExists(CartellaPrincipale+'map.osm') then DeleteFile(pchar(CartellaPrincipale + 'map.osm'));
end;
end;