Jak*_*ays -3 delphi delphi-2010
如何在下载之前检查JPG url是否存在,以避免异常?
procedure TForm1.Button1Click(Sender: TObject);
var
FS: TFileStream;
Url, FileName: String;
I, C: Integer;
begin
for I := 1 to 1000 do
begin
Url := 'http://www.mysite.com/images/' + IntToSTr(I) + '/Image.jpg';
FileName := 'C:\Images\' + IntToStr(I) + '.jpg';
FS := TFileStream.Create(FileName, fmCreate);
try
try
IdHTTP1.Get(Url);
c := IdHTTP1.ResponseCode;
if C = 200 then
IdHTTP1.Get(Url, FS);
except
end;
Application.ProcessMessages;
finally
Fs.Free;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
要回答您的主要问题,您必须检查特定URL是否有效的唯一方法是检查Web服务器并检查服务器告诉您的内容.
使用indy,您可以使用AIgnoreRepliesGet和其他方法的参数来指示TIdHTTP实例在Web服务器返回状态时不引发异常,如下所示:
IdHTTP1.Get(Url, FS, [404]);
Run Code Online (Sandbox Code Playgroud)
如果任何状态不同于200和400,则仍会出现异常.根据组件的各种配置,还有其他状态代码可能不会引发异常,例如状态代码401和验证参数等.
也就是说,我在你的代码中发现了几个问题:
EOutOfMemory不仅仅是a EIdSocketError,EIdHTTPProtocolException甚至是EMayanWorldEnd异常!GET命令,执行HEAD一个!| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |