415即使为SOAP 1.2调用设置了application / soap + xml之后,也不支持媒体异常

问题描述

我在尝试进行SOAP调用时遇到org.springframework.ws.client.WebServiceTransportException:不支持媒体类型[415]。代码如下:

public class SoapClient extends WebServiceGatewaySupport {

    public RunReportResponse getCostingDetails(RunReport request) {
        return (RunReportResponse) getwebservicetemplate()
                .marshalSendAndReceive(
                        "https://domain:443/xmlpserver/services/ReportService",request);
    }
}

SoapConfig.java

@Configuration
public class SoapConfig {

    @Bean
    public Jaxb2Marshaller marshaller() {
        Jaxb2Marshaller marshaller=new Jaxb2Marshaller();
        marshaller.setcontextpath("com.report.dto");
        return marshaller;
    }

    @Bean
    public SoapClient soapConnector() {
        SoapClient client = new SoapClient();
        client.setDefaultUri("https://domain:443/xmlpserver/services/ReportService");
        client.setMarshaller(marshaller());
        client.setUnmarshaller(marshaller());
        client.setMessageSender(httpComponentsMessageSender());
        return client;
    }

    @Bean
    public HttpComponentsMessageSender httpComponentsMessageSender() {
        return new HttpComponentsMessageSender(createHttpClient());
    }

    @Bean
    HttpClient createHttpClient() {
        List<Header> headers = new ArrayList<>();
        BasicHeader authHeader = new BasicHeader("Authorization","Basic username:password");
        BasicHeader contentType = new BasicHeader(HttpHeaders.CONTENT_TYPE,"application/soap+xml");
        headers.add(contentType);
        headers.add(authHeader);

        // add more header as more as needed
        RequestDefaultHeaders reqHeader = new RequestDefaultHeaders(headers);

       return HttpClients.custom()
                        .addInterceptorFirst(new HttpComponentsMessageSender.RemoveSoapHeadersInterceptor())
                        .addInterceptorLast(reqHeader)
                        .build();

    }
}

我正在通过Controller类调用getCostingDetails(),但收到错误

ERROR[http-nio-8080-exec-1] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing Failed; nested exception is org.springframework.ws.client.WebServiceTransportException: Unsupported Media Type [415]] with root cause
org.springframework.ws.client.WebServiceTransportException: Unsupported Media Type [415]
    at org.springframework.ws.client.core.webservicetemplate.handleError(webservicetemplate.java:695) ~[spring-ws-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.ws.client.core.webservicetemplate.doSendAndReceive(webservicetemplate.java:606) ~[spring-ws-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.ws.client.core.webservicetemplate.sendAndReceive(webservicetemplate.java:555) ~[spring-ws-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.ws.client.core.webservicetemplate.marshalSendAndReceive(webservicetemplate.java:390) ~[spring-ws-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.ws.client.core.webservicetemplate.marshalSendAndReceive(webservicetemplate.java:378) ~[spring-ws-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at com.report.client.soapClient.getCostingDetails(SoapClient.java:11) ~[main/:?]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)