java - SOAP HTTPS 测试获取类转换异常(字符串到整数)

标签 java soap https

我正在使用独立应用程序通过 HTTPS 测试 SOAP 请求。我有从 WSDL(使用 wsimport)创建的所需类,我已经使用一些模拟值填充了对象值。

令人惊讶的是,我所有的 XML 值都在字符串中,但我得到一个类转换异常为“字符串到整数”

客户端代码

EWOProviderWSEWOWsdl ewoProvider = new EWOProviderWSEWOWsdl();
EWOWsdlPortType servicePort = ewoProvider.getEWOProviderWSEWOWsdlPort();

BindingProvider bindingProvider = (BindingProvider) servicePort;
Map<String, Object> requestContext = bindingProvider
            .getRequestContext();

// Target End Point URL is set in the context here
requestContext
        .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                    "https://MY Url where WSDL is deployed");

// Timeouts in milliseconds
requestContext.put("com.sun.xml.internal.ws.request.timeout", "25000");
requestContext.put("com.sun.xml.internal.ws.connect.timeout", "15000");

// Credentials are set in over here
Map<String, List<String>> headers = new HashMap<String, List<String>>();
headers.put("Username", Collections.singletonList("UserName"));
headers.put("Password", Collections.singletonList("Password"));
requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
System.setProperty("proxySet", "true");
System.setProperty("proxyPort", "80");
System.setProperty("proxyHost", "myproxy_host");

JAXBElement<EWOOrders> ewoOrders = generateWSRequestObject();

String generatedXml = generateXmlRequestForProgistix(ewoOrders);
System.out.println("XML >> " + generatedXml);

DocTypeRefStatusMessageResponse responseMessage = servicePort
    .postEWOOrder(ewoOrders.getValue());

异常消息

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:117)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:194)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122)
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:123)
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626)
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585)
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570)
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467)
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:308)
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:163)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:135)
    at com.sun.proxy.$Proxy24.postEWOOrder(Unknown Source)
    at com.test.TestMain.main(TestMain.java:99)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.createHttpConnection(HttpClientTransport.java:263)
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:102)
    ... 14 more

最佳答案

当您在 BindingProvider 中设置超时时,看起来您可能使用了错误的类型。

requestContext.put("com.sun.xml.internal.ws.request.timeout", "25000");
requestContext.put("com.sun.xml.internal.ws.connect.timeout", "15000");

应该是:

requestContext.put("com.sun.xml.internal.ws.request.timeout", 25000);
requestContext.put("com.sun.xml.internal.ws.connect.timeout", 15000);

找到相关源码here .

关于java - SOAP HTTPS 测试获取类转换异常(字符串到整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34277009/

相关文章:

java - 从自定义日期方法获取空白日期作为字符串

testing - 将计数器的最大值保存到 JMeter 中的文件

ssl - 如何以及何时在 CFHTTP 标记中使用 ClientCert?

wcf - 什么是最简单的 WCF/SOAP 配置?

javascript - SOAP 原型(prototype) Ajax SOAPAction header 问题

java - 条纹 RedirectResolution 重定向到 https url

perl - HTTP::Daemon::SSL 自动获取并提供中间证书

java - Smack - 如何读取 MultiUserChat 的配置?

java - 如何关闭 Android 中的全部应用程序?

java - 如果我们在 spring MVC 中互换 @service 和 @repository 注解会发生什么