我有一个在所有浏览器中都可以正常工作的 URL(在 2 台计算机上测试了 5 个),但是如果我尝试使用 Indy Http 客户端的 Get() 获取页面内容,它会返回错误代码 404,找不到页面。这是最新的 Indy SVN 版本 (4985)。
为什么此 Web 服务器为 Indy 返回代码 404,但为每个浏览器返回代码 200?
我怀疑这可能是 Indy 中的错误,因为 URL 中的“#”字符(Indy 在 # 之后切断了所有内容)。如果是这样,有什么办法可以解决这个问题。也许用转义码替换# char?
这是我的示例代码。为此需要的只是带有 Indy 组件的 Delphi 以及带有按钮和备忘录的表单。
procedure TForm1.Button1Click(Sender: TObject);
var HTTPCLIENT1: TIdHTTP;
begin
try
try
HTTPCLIENT1 := TIdHTTP.Create(nil);
Memo1.Clear;
with HTTPCLIENT1 do
begin
HandleRedirects := True;
Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31';
Memo1.Text := Get('http://www.visionofhumanity.org/gpi-data/#/2011/scor/');
Caption := ResponseText;
end;
except
On e: Exception do
begin
Memo1.Lines.Add('Exception: '+e.Message);
end;
end;
finally
HTTPCLIENT1.Free;
end;
end;