我在Delphi中使用TNMHTTP从网页中检索代码。代码相对简单:

NMHTTP1 := TNMHTTP.Create(Self);
NMHTTP1.InputFileMode := FALSE;
NMHTTP1.OutputFileMode := FALSE;
NMHTTP1.ReportLevel := Status_Basic;
NMHTTP1.TimeOut := 3000;

URL := 'http://www....';
NMHTTP1.Get(URL);
S := NMHTTP1.Body;


我在try / except块中捕获了异常,但这不是问题。

问题在于,当URL是重定向时,在执行NMHTTP1.Get方法时,该方法不会返回并且程序会挂起。尽管事实上我已经设置了3000秒的超时时间。

因此,我看到了解决此问题的三种可能方式(以最容易到最难的顺序修改程序):


做任何必要的操作来获取NMHTTP1.Get方法进行响应。
在NMHTTP1.Get语句之前进行某种检查,以查看URL是否为重定向文件并获取要重定向的URL。
使用另一种方法来使用Delphi获取网页。在撰写本文时,我使用的是Delphi 4,但没有Indy。我现在有了Delphi 2009,所以如果没有简单的#1或#2答案,我将愿意使用在其中可用的功能(也许是INDY)。


我很想从一个对我有用的人那里得到答案。提前致谢。

最佳答案

我会避免使用NetMasters控件。

相反,可以使用Indy的IdHTTP组件,该组件具有RedirectMaximum属性(默认为15)和OnRedirect事件,以备您跟踪详细信息。

08-04 06:52