【问题标题】:Error on doing SOAP service call using java使用 java 进行 SOAP 服务调用时出错
【发布时间】:2020-05-06 06:07:35
【问题描述】:

我有 HTTPS 网络服务。我可以使用 wsimport 生成 java 类,但是当我调用该服务时,我收到以下异常:

com.sun.xml.internal.ws.client.ClientTransportException:HTTP 传输错误:java.net.UnknownHostException:abc.xyz.ca.com 在 com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:117) 在 com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:208) 在 com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:130) 在 com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:124) 在 com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:1121) 在 com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:1035) 在 com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:1004) 在 com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:862) 在 com.sun.xml.internal.ws.client.Stub.process(Stub.java:448) 在 com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:178) 在 com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93) 在 com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77) 在 com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147) 在 com.sun.proxy.$Proxy33.query(未知来源) 在 com.westpac.idm.clarityuserprovisioning.MainClass.main(MainClass.java:29) 引起:java.net.UnknownHostException:cppm6002-dev.ondemand.ca.com 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:606) 在 sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666) 在 sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173) 在 sun.net.NetworkClient.doConnect(NetworkClient.java:180) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java:463) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java:558) 在 sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:264) 在 sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) 在 sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1205) 在 sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) 在 sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1340) 在 sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1315) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:264) 在 com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:104)

我调用服务的类是这样的:

public static void main(String[] args) {


    try {
        Auth auth = new Auth();
        auth.setUsername("username");
        auth.setPassword("password");

        WbcActiveUsersQuery query_code = new WbcActiveUsersQuery();
        query_code.setCode("wbc_active_users");

        WbcActiveUsersQueryService service = new WbcActiveUsersQueryService();
        WbcActiveUsersQueryPort port = service.getWbcActiveUsersQueryService();

        WbcActiveUsersQueryResult result =  port.query(query_code, auth);

    }catch(Exception e) {

        e.printStackTrace();
    }

}

我尝试使用 SoapUI 来调用 web 服务,它在那里工作正常。

谁能帮忙。提前谢谢你。

【问题讨论】:

    标签: java web-services soap wsdl wsimport


    【解决方案1】:

    java.net.UnknownHostException: abc.xyz.ca.com 表示您没有使用正确的服务主机名/url。

    请使用正确的网址。

    代理使用:

    System.setProperty("http.proxyHost", host);
    System.setProperty("http.proxyPort", port);
    System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
    

    或者,您也可以将代理设置为您已部署客户端代码的服务器以调用 Soap 服务。

    【讨论】:

    • 你能用 Soap UI 的屏幕截图更新问题吗?它可以清楚地显示在那里使用的确切 URL?
    • 更新了soapUI。 URL 在企业网络内部,调用服务时使用 https 方法。
    • 主机abc.xyz.ca.com 究竟来自哪里?它在日志中吗?它是否存在于 wsdl 文件或代码中的任何位置?
    • 我改了隐藏实际网址
    • 如何为此设置代理。如果我在 SOAP 中禁用代理,我会得到同样的异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多