AxisFault:传输错误:AXIS2 客户端 (JAVA) 中出现 415 错误

Posted

技术标签:

【中文标题】AxisFault:传输错误:AXIS2 客户端 (JAVA) 中出现 415 错误【英文标题】:AxisFault: Transport error: 415 Error in AXIS2 client(JAVA) 【发布时间】:2014-06-18 07:53:31 【问题描述】:

我正在尝试使用托管在 TOMCAT 上的 java 应用程序调用 webservice(SOAP1.2)。已使用 AXIS2 生成客户端。当我调用 WS 方法时,我得到了错误。

org.apache.axis2.AxisFault:传输错误:415 错误:无法处理 消息因为内容类型'application/soap+xml; 字符集=UTF-8; action="XXXXXXXXXXXX.SearchByName"' 不是 预期类型“应用程序/soap+msbin1” 在 org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) 在 org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:194) 在 org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) 在 org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404) 在 org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) 在 org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) 在 org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 在 XXXXXXXXXXXX.SearchByName(RelmgmtTool_WebService_BANDStub.java:937) 在 XXXXXXXXXXXX.SearchACCLServiceImpl.searchACCL(SearchACCLServiceImpl.java:281) 在 XXXXXXXXXXXX.ACCLSearchAction.execute(ACCLSearchAction.java:392) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) 在 com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) 在 com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.ml.grci.webapp.interceptor.GcbParamInterceptor.intercept(GcbParamInterceptor.java:81) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 com.ml.grci.webapp.interceptor.SessionCheckInterceptor.intercept(SessionCheckInterceptor.java:120) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 在 org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) 在 org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 在 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 com.ml.framework.webapp.filter.StaticFilter.doFilterInternal(StaticFilter.java:124) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 com.ml.framework.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:78) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265) 在 org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 在 org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) 在 org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) 在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 在 org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166) 在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 在 org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 在 org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 在 org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) 在 org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 com.ml.framework.webapp.filter.TimerFilter.doFilter(TimerFilter.java:46) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Thread.java:662)

请帮忙。

【问题讨论】:

这是完整的堆栈跟踪吗?看起来很简单:您正在发送意外类型的内容。你是用什么生成存根的? @kolossus 是的,我理解错误。但不确定内容类型“'application/soap+msbin1'”是什么。以及如何在生成请求时设置此内容类型。还更新了完整的堆栈跟踪。 【参考方案1】:

您是否尝试过降级您的axis soap uri?

stub._getServiceClient()
   .getOptions()
   .setSoapVersionURI(
               SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

【讨论】:

以上是关于AxisFault:传输错误:AXIS2 客户端 (JAVA) 中出现 415 错误的主要内容,如果未能解决你的问题,请参考以下文章

Exception in thread "main" org.apache.axis2.AxisFault: wrong number of arguments

org.apache.axis2.AxisFault: unknown

关于使用Axis2 webservice 处理Fault响应时抛org.apache.axis2.AxisFault的分析

org.apache.axis2.AxisFault: Timeout waiting for connection

org.apache.axis2.AxisFault: Timeout waiting for connection

在axis2的响应中封装了两次Soap和Body标签