问题描述
我在尝试进行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 (将#修改为@)