如何为SOAP调用设置超时



我需要在HTTPS上使用javax.xml.soap为SOAP调用设置超时然而,我不知道如何做到这一点,一定有一个技巧做到这一点,但我找不到它。

SOAPMessage sm = null;
SOAPMessage response = null;
SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
SOAPConnection connection = sfc.createConnection();
MessageFactory mf = MessageFactory.newInstance();
sm = mf.createMessage();
...
...
URL url = new URL("https://server:XXXX/blablabla);
response = connection.call(sm, url);

我看见有人在做:

if (xxxSoapService instanceof Stub)
            ((Stub) xxxSoapService).setTimeout(10000);

xxxSoapService扩展java.rmi.Remote和Stub是来自import org.apache.axis.client.Stub;

假设您已经在后台线程中执行了。call()。你可以在另一个线程上触发计时器,并杀死正在加载的线程。

或者,因为SOAPMessage有你所有的数据,你可以只使用HttpUrlConnection来发送消息。

HttpUrlConnection connection = // initialize me!
connection.setReadTimeout(TIMEOUT_VALUE);
SOAPMessage sm = // initialize me!
// more stuff for your message
connection.connect();
sm.writeTo(connection.getOutputStream());

这应该可以工作,除非我对writeTo()的行为有误解。

相关内容

  • 没有找到相关文章

最新更新