gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:01:28 27 4
gpt4 key购买 nike

我正在使用 javax.xml.soap API(javax.xml.soap.SOAPConnectionFactoryjavax.xml.soap.SOAPConnection , 和 friend )对远程服务器进行 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。

关于java - 使用 javax.xml.soap.SOAPConnection 设置套接字读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com