Web Services 如何在ColdFusion中对Web服务调用应用时间限制?

u3r8eeie  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(110)

我正在处理一个调用外部Web服务来获取数据的系统,当Web服务出现故障时,调用者就会挂起,模板永远不会结束。
在调用模板中有一个CFSETTING REQUESTTIMEOUT,但它似乎没有应用于Web服务调用。调用代码使用CFSETTING T,我对语法不太舒服。有人能告诉我如何将超时应用于以下代码吗?

ws = CreateObject("webservice", "http://#trim(arguments.RemoteSite)#",{wsversion="2"});
ret = ws.GetJData("#arguments.clubid#", #datepart('yyyy',arguments.StartDate)#, #datepart('m',arguments.StartDate)#);
1yjd4xko

1yjd4xko1#

文档指出,当创建WSDL对象时,您可以在argStruct中设置超时。默认情况下为0(无超时);如果您设置超时,则还需要异常处理,因为Web服务调用将抛出超时异常。

// Define webservice config
webServiceConfig = {
  wsversion="2",
  timeout=10
};
// Initialise wsdl webservice
ws = CreateObject(
  "webservice",
  "http://#trim(arguments.RemoteSite)#",
  webServiceConfig
);
try
{
  // Execute method
  ret = ws.GetJData(
    "#arguments.clubid#",
    #datepart('yyyy',arguments.StartDate)#,
    #datepart('m',arguments.StartDate)#
  );
} catch (any e)
{
  // An exception is thrown on timeout - handle it here:
  ret = "";
}

我在CF Fiddle上测试了这个模式,如果你想自己试试的话。

相关问题