如何设置连接webservice的超时时间

cjhpt 2013-09-12 12:04:09
delphi有人是这样解决的,//XXX begin 2012-11-16 15:24:41 处理beforepost事件
type
TEventHandlers = class { 建一个虚拟类}
procedure aOnBeforePost(const HTTPReqResp:THTTPReqResp;Data : Pointer);
end;
//XXX end 2012-11-16 15:24:43

//XXX begin 2012-11-16 15:36:06 处理“试图引用不存在的令牌”问题
procedure TEventHandlers.aOnBeforePost(const HTTPReqResp:THTTPReqResp;Data : Pointer);
var
iTimeOut : Integer;
begin
iTimeOut := 3600000;
InternetSetOption(Data,
INTERNET_OPTION_RECEIVE_TIMEOUT,
Pointer(@iTimeOut),
SizeOf(iTimeOut));
end;
//XXX end 2012-11-16 15:36:09
//然后在需要时替换事件,以下是替换代码
RIO := THTTPRIO.Create(nil);
//XXX begin 2012-11-16 15:42:41 替换原来的BeforePost事件
RIO.HTTPWebNode.OnBeforePost := EvHandler.aOnBeforePost;
//XXX end 2012-11-16 15:42:44
我在bcb中这样改
void aOnBeforePost(THTTPReqResp HTTPReqResp, Pointer Data)
{
int iTimeOut;
iTimeOut = 30000;
InternetSetOption(Data,INTERNET_OPTION_RECEIVE_TIMEOUT,Pointer(&iTimeOut),sizeof(iTimeOut));
}

rio->HTTPWebNode->OnBeforePost = aOnBeforePost;
提示
[BCC32 Error] EsbBusService.cpp(45): E2034 Cannot convert 'void (*)(THTTPReqResp,void *)' to 'TBeforePostEvent'
...全文
581 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zihan 2013-09-17
  • 打赏
  • 举报
回复
你的数类型不对,因为电脑上面没有环境,无法帮你调试,只有告诉你,你自己修改试试。 1. 确保这个函数的定义和TBeforePostEvent 的定义完全一样。 void aOnBeforePost(THTTPReqResp HTTPReqResp, Pointer Data) 2. 看看这个OnBeforePost属性的定义是只读的还是可写的,如果是只读的就没有办法,重新实现吧,如果是可写的,则 3. 赋值的时候进行强制转换,C++要求比较严谨。 rio->HTTPWebNode->OnBeforePost = (TBeforePostEvent *)aOnBeforePost;
cjhpt 2013-09-16
  • 打赏
  • 举报
回复
有没有人用过,现在老是超时。有什么别的解决方法。
cjhpt 2013-09-12
  • 打赏
  • 举报
回复
没有人回复,事情有点急!

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧