我需要通过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;
我可能在那里失踪了。
答案 0 :(得分:0)
假设您已经在后台线程中执行了.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()的行为。