动态调用cxf的接口报异常Unmarshalling Error: unexpected element (uri:"", local:"orgCode")

WonHyo 2018-12-30 01:14:59
客户的接口服务是springMVC+cxf3.0写的。接口函数定义为如下,客户接口服务需要的参数是4个,前三个为字符串,第四个是json格式字符串。
String cardDataExchange(String orgCode, String operterInfo,
String businessType, String parameterInfo)

所以我用了cxf常用的动态调用方式来调用客户的接口,调用代码如下。

JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
String URL="";
Client client = clientFactory.createClient(URL);
Object[] result;
try {
JSONObject jObject = new JSONObject();
jObject.put("a", "1");
jObject.put("b", "1234");
result = client.invoke("cardDataExchange", new Object[]{"111","222","333",jObject.toString()});
Object returnInfo=(Object) result[0];
System.out.println(returnInfo.toString());
} catch (Exception e) {
e.printStackTrace();
}

但动态调用报了这个错误,

Unmarshalling Error: unexpected element (uri:"", local:"orgCode") .Expected elements are <{http://carddatabusines.webservice.sccd.app.com/}operterinfo>,<{http://carddatabusines.webservice.sccd.app.com/}businessType>,.......

因为是客户写好的接口服务,人家是不会改接口服务代码的了。这样我只能从客户端方面,看怎样能调用成功客户的接口。
想让错误问题重现,自己也按照客户接口的wsdl文件,模拟了一个接口服务,但客户端动态调用自己的模拟服务接口是完全可以成功的。
wsdl文件部分信息大概如下,自己模拟的接口wsdl文件信息完全和客户接口的wsdl文件信息一致

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://carddatabusines.webservice.sccd.app.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="GreetingServiceImplService" targetNamespace="http://carddatabusines.webservice.sccd.app.com/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://carddatabusines.webservice.sccd.app.com/" elementFormDefault="unqualified" targetNamespace="http://carddatabusines.webservice.sccd.app.com/" version="1.0">
<xs:element name="cardDataExchange" type="tns:cardDataExchange"/>
<xs:element name="cardDataExchangeResponse" type="tns:cardDataExchangeResponse"/>
<xs:complexType name="cardDataExchange">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="orgCode" type="xs:string"/>
<xs:element form="qualified" minOccurs="0" name="operterInfo" type="xs:string"/>
<xs:element form="qualified" minOccurs="0" name="businessType" type="xs:string"/>
<xs:element form="qualified" minOccurs="0" name="parameterInfo" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="cardDataExchangeResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>

各位大佬对这方面又懂,请告知小弟一下,要怎么调用才能成功
...全文
2383 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WonHyo 2019-01-01
  • 打赏
  • 举报
回复
没人遇到过么,自己顶一下
WonHyo 2018-12-30
  • 打赏
  • 举报
回复
引用 1 楼 执笔记忆的空白 的回复:
wsdl 你通过工具能调通吗?


参考这种方式试试?
反正用c#写的客户端是可以直接调用的了。但现在要改成Java调用。而且有其他部门在正常使用这个接口的了
  • 打赏
  • 举报
回复
wsdl 你通过工具能调通吗?


参考这种方式试试?

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧