使用idHttp时经常报错:Socket Error,Host Not Found!(26分)

  • 主题发起人 主题发起人 linuxping
  • 开始时间 开始时间
L

linuxping

Unregistered / Unconfirmed
GUEST, unregistred user!
使用idHttp时经常报错:Socket Error,Host Not Found!
不知道怎么解决..

注意啊,有时候它又不报错~

多谢大家讨论~

顶者有分~
 
错误的完整描述是: Socket Error # 11001,Host Not Found!

现在又发现了一个错误: Connect reset by peer.
 
下面是出错处的代码:
var
iRetris:Byte;
sEncode:string;
begin
FHTTP.Host:=HandleHost(FSiteAddr);
FHttp.HandleRedirects:=True;
FHttp.Request.AcceptCharSet:='UTF-8';
FHttp.Request.AcceptLanguage:='ch';

if FIsEncode then
sEncode:=TIdURI.ParamsEncode(UTF8Encode(FWord))
else
sEncode:=FWord;

for iRetris:=0 to 2 do //重试3次
try
Result:=FHttp.Get(FSiteAddr+sEncode); <-------------这里报错
Exit;
except
Continue;
end;
Result:='';
 
等待indy高手出现~
 
问题依然存在

迫切期待高手帮忙解决
 
只有帮你顶了哈
 
问题依然存在

迫切期待高手帮忙解决
 
另外,我的这段代码是放在多线程里的,大概会有20个线程吧~~


期待高手帮忙解决
 
没用过这东东,帮你顶一下吧
 
分太少了,Get再跟进去,就可以看了,应该在错误时它直抛出异常了,找到那个抛出地方,改成你想要的。最好不要用这个控件,这个控件问题太多,anhttp不错。
 
用IDHTTP控件就是这样,在连接一段时间就会出现这样的错误,不过你可以捕获着几个异常,然后在异常中将idhttp.free了,再重新创建,设置属性就可以了。主要在这个期间要sleep一会哦。不然还是一样
 
说的不是很清楚~

只好无奈接受答案
 
一个Indy的Bug,由于转向的地址是这样的
http://www.host.com?param=value
于是Indy报错了.你需要在OnRedirect事件里面,判断dest变量,是不是host后面紧跟问号(或者问号前面如果没有document的地址,只有域名的时候,问号前面的字符不是/的话,自己增加进去.即,改
http://www.host.com?param=value
成为
http://www.host.com/?param=value
这样,就不会报错了.这个问题我已经提交给Remy了,但是他好几天都没有回音,过几天我去indy group问问这个问题解决了没.
 
多人接受答案了。
 

Similar threads

后退
顶部