社区
网络通信/分布式开发
帖子详情
急急急:谁能解决TIdHTTP.Get超时无响应的问题???我愿意出RMB解决。
icedheart
2008-04-13 07:33:23
关于在目的URL繁忙或者网络异常的情况下,,TIdHTTP.Get(URL)没有任何信息反馈,一直阻塞在这里,导致整个线程停止,try...except也无法捕获异常,网络搜索这方的解决办法,但是一直找不到,ConnectTimeout或者ReadTimeout根本不起作用,哪位大侠有这方面的解决办法的???请出手相助,我出RMB也行,不过不要太多就可以了……
...全文
1680
39
打赏
收藏
急急急:谁能解决TIdHTTP.Get超时无响应的问题???我愿意出RMB解决。
关于在目的URL繁忙或者网络异常的情况下,,TIdHTTP.Get(URL)没有任何信息反馈,一直阻塞在这里,导致整个线程停止,try...except也无法捕获异常,网络搜索这方的解决办法,但是一直找不到,ConnectTimeout或者ReadTimeout根本不起作用,哪位大侠有这方面的解决办法的???请出手相助,我出RMB也行,不过不要太多就可以了……
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
likeyrain
2010-07-01
打赏
举报
回复
可以用截包工具截一下有没有在工作啊,再根据截到的包分析是那步有问题,
apilove
2010-06-29
打赏
举报
回复
换成ICS !!
Indy问题多!!!
Frank.WU
2010-06-29
打赏
举报
回复
放在线程里面,设置线程中断标志。需要的时候就退出线程。
singlexinglove
2010-06-29
打赏
举报
回复
帮顶一下 ,期待问题解决!!!
nkym0626
2010-06-23
打赏
举报
回复
学习
Flymorn
2010-06-23
打赏
举报
回复
可以使用多线程解决这个问题,把idhttp放到线程里动态创建,这样即使会卡死,也不会卡死主线程。
实际上,卡死还是会发生,只不过在子线程里发生了。
ConnectTimeout 在网络异常或服务器失去响应的情况下 不起作用的,因为 indy 是阻塞式通讯,没有返回就一直等待,直到超时,你可以看下这篇文章提到的方法:
http://www.piaoyi.org/computer/Delphi-INDY-IDFTP-IDHTTP-connecttimeout.html
彻底解决。
knowledge_Is_Life
2008-04-30
打赏
举报
回复
接分是王道!
ERR0RC0DE
2008-04-25
打赏
举报
回复
自己写个SOCKET API client,自己设置ReadTimeout,保证没事,:D
icedheart
2008-04-25
打赏
举报
回复
请问换什么控件可以代替indy?
zzzl
2008-04-21
打赏
举报
回复
以前写用它写抓取网页程序的时候,确实碰见过,百思不得其解,换控件解决的
indy挺垃圾的
enli
2008-04-19
打赏
举报
回复
嗯,有这个问题的,详细见:http://i.92wy.com/html/96/756996-91916.html
icedheart
2008-04-19
打赏
举报
回复
做过的高手出来指点一下,谢谢。
icedheart
2008-04-18
打赏
举报
回复
高手都隐身了么?
icedsoul
2008-04-16
打赏
举报
回复
只要是IDHTTP.GET卡住了就是无限时卡,一直卡着不动了。程序非常简单,不存在问题。
try
IdHTTP.Get(SUPAddress+'Supplier/ProductSaving.asp'); //网络正常的时候没有问题,要是网络慢的时候就一直卡在这里不动了
Memo_Msg.Lines.Add(IntToStr(IdHTTP.ResponseCode));
except
//
end;
ideation_shang
2008-04-16
打赏
举报
回复
服务器一般情况下tcp连接超时时间为5分钟
icedsoul
2008-04-16
打赏
举报
回复
IDHTTP一套那么强大的组件,不应该考虑不到这些网络因素吧???
icedsoul
2008-04-16
打赏
举报
回复
问题就在这里了:
在JAVA服务器端打上了断点的话,哪么是会停在哪里,一直等服务器响应,一般情况是不会的,很快就能返回端服端的信息
到客户端.
如果发送的请求包丢失又或者服务器没有返回数据包、返回的数据包丢失,那么就一直停在这里了。怎么处理这个问题???在网络繁忙、或者目的服务器负载比较重的情况下就发生了我碰到的现象了。
求大侠们想想解决办法。
skylkj
2008-04-16
打赏
举报
回复
IdHTTP是阻塞式的
在indy misc里有个IdAntiFreeze,放上后可以改成非阻塞式
myheartzhang
2008-04-16
打赏
举报
回复
不见可能的,我们就是用IdHTTP1来下载的,一开启程序的时候先检测服务器上有没有最新的版本,
IdHTTP1 可以设置连接时间的,如果超过这个时间,他自动会返回1006,超时错误,
没有一直卡在哪里,然后跳出下载.我们是在JAVA服务器端通信时,如果是调试的时候,
在JAVA服务器端打上了断点的话,哪么是会停在哪里,一直等服务器响应,一般情况是不会的,很快就能返回端服端的信息
到客户端.
procedure HttpDownLoad(const aURL, aFile: string; bResume: Boolean);
var
tStream: TFileStream;
IdHTTP1:TIdHTTP;
begin
try
//如果文件已经存在
if FileExists(aFile) then
tStream := TFileStream.Create(aFile, fmOpenWrite)
else
tStream := TFileStream.Create(aFile, fmCreate);
IdHTTP1:=TIdHTTP.Create(nil);
if bResume then //续传方式
begin
IdHTTP1.Request.ContentRangeStart := tStream.Size - 1;
tStream.Position := tStream.Size - 1; //移动到最后继续下载
IdHTTP1.Head(aURL);
IdHTTP1.Request.ContentRangeEnd := IdHTTP1.Response.ContentLength;
end
else //覆盖或新建方式
begin
IdHTTP1.Request.ContentRangeStart := 0;
end;
try
IdHTTP1.Get(aURL, tStream); //开始下载
finally
tStream.Free;
end;
except
on E: Exception do
begin
raise Exception.Create('下载文件'+aURL+'失败:'+e.Message);
end;
end;
end;
skylkj
2008-04-16
打赏
举报
回复
看了下IdAntiFreeze和IdAntiFreezeBase两个单元.好像不是创建线程的.....
大致看了下,好像是在超时之前一直是一个循环,但是在循环里面有Application.ProcessMessages;所以主程序的界面消息仍然可以得到响应
有哪位大大深入研究过的来说说哈
加载更多回复(19)
Id
http
get方法演示
Delphi第三方组件id
http
get方法的详细演示。 具体说明见:
http
://blog.csdn.net/none01/article/details/8657822
delphi操作Id
HTTP
报头读写
delphi操作Id
HTTP
报头读写 delphi操作Id
HTTP
报头读写
Delphi XE8 ID
HTTP
1.get()方法從Servlet服务器取json数据
练习:JAVA 服务端(SERVLET3.1) + DELPHI客户端(ID
HTTP
) 三层开发。 练习笔记《Delphi XE8 ID
HTTP
1.get()方法從Servlet 服务器取json数据.doc》。 已经实现基本的 提交 新增、修改、删除、查询SQL命令功能。 开发环境: WIN7(TW) + ECLIPSE LUNA4.4 + MSSQL 2008R2 + JDK1.7.0.55 + TOMCAT8.0.24 SERVLET3.1 + MSSQL 2008 例子. 生成JSON结构数据。 可以这样传入参数(sql=“select top 2 * from t_app”)
http
://localhost:8080/msSQLDemo/User2Servlet?sql=select%20top%202%20*%20from%20t_app 结果: {"Result":[{"sys_name":"財務系統","app_id":"frm_acc_check","app_name":"票據登記"}, {"sys_name":"財務管理","app_id":"Frm_acc_checkCancel","app_name":"應收核銷作業"}]} 练习的项目,代码很乱。
delphi 7 id
http
post 的8种使用方法
delphi 7 id
http
post 的8种使用方法(含源码),介绍了8种使用方法,供学习交流使用。
Id
http
示例.rar_DELPHI7 Id
http
示例_continuedhxe_delphi7 id
http
_idhtt
INDY 控件 中 ID
http
控件例子 delphi7
网络通信/分布式开发
1,594
社区成员
32,958
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章