之前做项目的时候刚好遇到这个问题,如果不设置timeout,SOAP请求时间太长,这样肯定不行的。刚开始以为SOAPMessage 设置timeout可以像Http请求那样调用类似setTimeOut方法,但找了半天也没有找到这样的方法,反正我是没有找到,于是在网上查下资料终于找到了解决的方法,下面贴出来给大家参考
SOAPConnection conn=this.wsConnection.getSoapConnection(); //这是我代码的
SOAPMessage soap=service.validate(this.wsConnection, cardNo); //东西可以忽略String url=this.wsConnection.getUrl(); //写出来只是为了有个连贯性
//下面是对连接url设置timeout
URL endpoint= new URL(new URL(url), "",
new URLStreamHandler(){@Override
protected URLConnection openConnection(URL url) throws IOException {
URL target = new URL(url.toString());
URLConnection connection = target.openConnection();
// Connection settings
connection.setConnectTimeout(30*1000);//timeout时间为30秒
connection.setReadTimeout(30*1000);//timeout时间为30秒
return(connection);
}
});
//上面的endpoint就是设置了timeout的url,这个时候我们在call soap请求,超过设置的timeout时间就会断开,这个时候就不会出现连接不上等好久才断开连接的情况
soapResponse=conn.call(soap, endpoint);