我刚开始遇到Indy的问题。出于一些奇怪的原因,即使这个非常基本的程序也不起作用:
procedure TForm1.Button1Click(Sender: TObject);
var ID: TIdHTTP;
ms: TMemoryStream;
begin
ID:=TIdHTTP.Create();
ms:=TMemoryStream.Create;
ID.HandleRedirects:=true;
ID.Get('http://www.google.com',ms);
Memo1.Lines.LoadFromStream(ms);
end;
没有任何内容添加到Memo1中。 SizeOf(ms)返回4.
我甚至重新安装了Indy,仍然没有。我的项目之前肯定有用,但现在不从任何页面下载任何内容。我想知道,问题是什么?
答案 0 :(得分:13)
尝试致电
MS.Position := 0;
之前
Memo1.Lines.LoadFromStream(ms);
另外,可以通过调用“Size”属性来找到流的大小
ShowMessage('size of stream = ' + IntToStr(ms.size) + ' bytes');
答案 1 :(得分:0)
奇怪的是,代码应该有效,假设之前有类似的代码。
抱歉,我 要求:
您是否确认从同一个用户帐户下的同一台计算机访问同一个网址可以在浏览器中使用?尝试第三方浏览器以及IE。无法回想起Indy是否使用WinHTTP,但这是可能的,影响WinHTTP的问题,如某些恶意软件或BHO会影响IE,但不会影响,例如,Firefox,Chrome或Opera。
您是否尝试关闭防病毒系统和/或防火墙(如果使用任何非内置防火墙)?许多防病毒软件包包括用于实时网络流量扫描的Winsock LSP或NDIS拦截器,可能会产生干扰。
最后,如果失败了,您是否可以尝试使用wget或cURL的Windows端口获取同一个URL,只是为了查看其他非浏览器HTTP客户端是否存在问题还是吗?