在不同的机器上调用webservice怎么解决超时问题,不修改配置文件,或者是超时时我怎么处理不让程序报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在不同的机器上调用webservice怎么解决超时问题,不修改配置文件,或者是超时时我怎么处理不让程序报错相关的知识,希望对你有一定的参考价值。

try

YSTDLLService.SMSService service=new CCNBusseness.YSTDLLService.SMSService();

service.Timeout=1000;

if(service.CuanhuoCheck(strMobilePhone,strMoMsg))

strMtMsg="数据已经上传到平台。";

else

strMtMsg="数据未成功上传到平台。";


catch(SoapException ex)

EnvFramework.SystemLog.Instance().LogApp
(
"",
"",
DateTime.Now,
"Buss9588210882",
"SMSCall",
ex.Message
);
strMtMsg = "调用webservice失败,请稍后再试";

我已经这样写了,没用,而且还不到我的这个catch里

参考技术A 设置timeout属性,当他超时时就做出相应的处理,或捕捉异常或设置重新连接或避开执行其他操作或退出程序等等 参考技术B 超时报错或其它异常都可以用
try

//可能有错的代码

catch(Exception ex)

//错误时处理程序 或返回的信息


没到这个Catch里面说明。还没运行到这段代码。你再看看出现的异常信息。也可以给我留言。
参考技术C php使用webservice的时候 需要开启soap扩展 否则webservice是不好使的
当然使用nusoap这种第三方插件也可以。。

-------------------------------------------------
给我留言 我给你发一份 记得选择满意答案哦!
参考技术D 你可以打印一些输出信息来测试一下到底是哪个地方的问题!

接口超时需要怎么处理

1/6
程序的超时有两种,首先是webservice连接本身建立通讯了,但是一直没有返回数据,所以上面的代码中定义了webservice的连接超时时间为13s,这是定义在php.ini中的,如果webservice连接超过13s,程序就抛出连接超时的异常。

2/6
另外一种是脚本执行超时,有时候可能是浏览器,网络等各种原因,webservice还没有连接,脚本就陷入了假死状态,所以定义脚本超时时间,系统默认脚本执行时间为30s。

3/6
当调用set_time_limit时,计时器会从0开始计时,前面各种元素加载的时间并不计算在内。此处结合上面的webservice连接超时时间,如果webservice连接上了后产生阻塞。

4/6
13s内便会抛出异常,所以不会引起15s才触发的脚本中断。所以,如果脚本中断基本可以认定webservice没有连接成功。当然,我们查看过webservice连接情况,正常情况下,2s内连接的建立,数据的返回都完成了。

5/6
webservice连接成功后没有及时返回数据,也没有达到13s的连接超时,但是由于前面建立连接时花了不止2s,脚本执行到15s时,中断了脚本,再重建连接返回了非预期的数据。所以,如果愿意等待的话,这两者之间的时间最好可以相差大点。

6/6
脚本中断后系统会报错,所以,这边还有个处理技巧,先记下当前的报错级别,然后重置为0,即不报任何错误,不自动抛出异常,然后脚本超时后,调用register_shutdown_function注册一个自定义函数,超时后会自动调用这个函数,显示自定义的信息。当然,如果webservice连接成功的话,还是需要回复先前的错误级别,不然,webservice连接超时后的异常将无法捕获。
参考技术A 回答

1/6程序的超时有两种,首先是webservice连接本身建立通讯了,但是一直没有返回数据,所以上面的代码中定义了webservice的连接超时时间为13s,这是定义在php.ini中的,如果webservice连接超过13s,程序就抛出连接超时的异常。

2/6另外一种是脚本执行超时,有时候可能是浏览器,网络等各种原因,webservice还没有连接,脚本就陷入了假死状态,所以定义脚本超时时间,系统默认脚本执行时间为30s。3/6当调用set_time_limit时,计时器会从0开始计时,前面各种元素加载的时间并不计算在内。此处结合上面的webservice连接超时时间,如果webservice连接上了后产生阻塞。4/613s内便会抛出异常,所以不会引起15s才触发的脚本中断。所以,如果脚本中断基本可以认定webservice没有连接成功。当然,我们查看过webservice连接情况,正常情况下,2s内连接的建立,数据的返回都完成了。

5/6webservice连接成功后没有及时返回数据,也没有达到13s的连接超时,但是由于前面建立连接时花了不止2s,脚本执行到15s时,中断了脚本,再重建连接返回了非预期的数据。所以,如果愿意等待的话,这两者之间的时间最好可以相差大点。6/6脚本中断后系统会报错,所以,这边还有个处理技巧,先记下当前的报错级别,然后重置为0,即不报任何错误,不自动抛出异常,然后脚本超时后,调用register_shutdown_function注册一个自定义函数,超时后会自动调用这个函数,显示自定义的信息。当然,如果webservice连接成功的话,还是需要回复先前的错误级别,不然,webservice连接超时后的异常将无法捕获。

希望对你有帮助,亲

以上是关于在不同的机器上调用webservice怎么解决超时问题,不修改配置文件,或者是超时时我怎么处理不让程序报错的主要内容,如果未能解决你的问题,请参考以下文章

关于webservice的那个问题是怎么解决的?连接超时

Web发布到服务器上后,调用的webService偶尔会不显示。是啥原因?

java客户端调用webservice 超时问题

急啊!c#怎么通过SOAP调用服务器的方法,已经知道方法名

C# 怎么将webservice部署到IIS上

webservice返回数据量太大,导致超时怎么办?