我正在创建一个 SOAP 消息,然后尝试使用以下代码发送它。
try {
System.setProperty("http.proxyHost", "proxy.myproxy.com");
System.setProperty("http.proxyPort", "80");
connection = SOAPConnectionFactory.newInstance().createConnection();
response = connection.call(message, "https://www.service.com/call");
connection.close();
} catch (SOAPException e) {
e.printStackTrace();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
finally{
System.setProperty("http.proxyHost", "");
System.setProperty("http.proxyPort", "");
}
最后是因为我在访问本地域上的 url 时需要绕过代理。我知道这是一种黑客行为,并且会对其他解决方案感兴趣。然而,真正的问题与超时有关。但是,每次都会超时,如果我获取 SOAP 消息并使用 SOAPUI(相同的代理设置)发送它,我会得到成功的响应。
Java 代码的响应...
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>java.net.ConnectException: Connection timed out: no further information</faultstring></soapenv:Fault></soapenv:Body></soapenv:Envelope>