使用javax.xml.soap.SOAPConnection设置套接字读取超时

我正在使用javax.xml.soapAPI(javax.xml.soap.SOAPConnectionFactoryjavax.xml.soap.SOAPConnection和,和朋友)对远程服务器进行Web服务调用,这在很大程度上取得了很大的成功。

但是,有时会出现问题,并且程序永远卡住。

为了解决这个问题,我想添加一个读取超时。

我发现有几种方法可以实现这一目标,但它们似乎都非常糟糕。

所以我对社区的问题是:使用javax.xml.soap API进行调用时,实现读取超时行为的最佳方法是什么?

回答:

您必须创建自己的URLStreamHandler,以便可以设置URLConnection参数,例如连接超时和读取超时。

SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection();

URL endpoint =

new URL(new URL("http://yourserver.yourdomain.com/"),

"/path/to/webservice",

new URLStreamHandler() {

@Override

protected URLConnection openConnection(URL url) throws IOException {

URL target = new URL(url.toString());

URLConnection connection = target.openConnection();

// Connection settings

connection.setConnectTimeout(10000); // 10 sec

connection.setReadTimeout(60000); // 1 min

return(connection);

}

});

SOAPMessage result = connection.call(soapMessage, endpoint);

为了清楚起见,我删除了一些try / catch。

以上是 使用javax.xml.soap.SOAPConnection设置套接字读取超时 的全部内容, 来源链接: utcz.com/qa/421394.html

回到顶部