背景:我作为client,调用对方的server。即客户端调用服务端,报此错。

通常是因为对方服务出现问题,即对方代码写的有问题。

以我自己的客户端代码为例,是在执行这行代码的时候报错,即调用对方服务时报错,没有拿到返回值response。

MyWebService1Response reponse = service.process(request);

报错:

javax.xml.ws.soap.SOAPFaultException: Internal Error
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:161)
	at com.sun.proxy.$Proxy41.process(Unknown Source)
	at com.ali.oa.ws.T1.f1(T1.java:56)
	at com.ali.oa.ws.T1.main(T1.java:22)
Caused by: org.apache.cxf.binding.soap.SoapFault: Internal Error
	at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)
	at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)
	at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
	at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
	at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
	at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798)
	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1670)
	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1551)
	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1348)
	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651)
	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
	... 3 more

客户端代码大致代码如下:

String address = "http://xxxx";
String appId="xx";
String appName="xx";
String modId="xx";
MyWebService1Request request= new MyWebService1Request();
            request.setMyBody(body);
            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            // 设置代理地址
            factory.setAddress(address);
            // 设置接口类型
            factory.setServiceClass(MyWebService1Client.class);
            // 创建一个代理接口实现
            MyWebService1Client service = (MyWebService1Client) factory.create();
            MsgHeader msg = new MsgHeader();
            msg.setAPPID(appId);
            msg.setAPPNAME(appName);
            msg.setMODID(modId);
            request.setMsgHeader(msg);
            MyWebService1Response reponse = service.process(request);
List<ResponseItem> responseItem = reponse.getResponseCollection().getResponseItem();

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐