webService接口调用报参数问题,求大神解决!!!!可追加积分!!

Asura8 2019-03-01 02:53:35
我想将数据推送到服务器上,但是数据比较复杂用的是自定义对象,在接口调用的时候就报参数问题,下面我会将问题以图片的形式贴出来,求大神帮忙,已经困扰好多天了
一:服务端wsdl报文


二:错误日志:


三:客户端代码:
public GBaseRetModel cMCompareRet(CapitalCompareModel capitalCompareModel) throws Exception {
//String url = "http://10.60.165.79:8089/services/com.ouyeel.financial.jk.web.CapitalOccupyInfoAxisService";
//String namespace = "http://web.jk.financial.ouyeel.com/";
GBaseRetModel gBaseRetModel = new GBaseRetModel();
//封装推送的数据
GBaseModel gBaseModel = new GBaseModel();
gBaseModel.setCustId("CP1542");
gBaseModel.setInstrtNo("00001");
CapitalCompareBaseModel[] capitalCompareBaseModels = new CapitalCompareBaseModel[1];
capitalCompareBaseModels[0] = new CapitalCompareBaseModel();
capitalCompareBaseModels[0].setAccountNo("01");
capitalCompareBaseModels[0].setAllotAmt("10000");
capitalCompareBaseModels[0].setBankProperty("01");
capitalCompareBaseModels[0].setColAmt("9000");
capitalCompareBaseModels[0].setCompareDate("2019-01-01");
capitalCompareBaseModels[0].setDailyOutAmt("0");
capitalCompareBaseModels[0].setDayDif("1000");
capitalCompareBaseModels[0].setPtUnitCode("CP1542");
capitalCompareBaseModels[0].setLoanCount("10000");
capitalCompareBaseModels[0].setDepositCount("9000");
capitalCompareBaseModels[0].setMonthDif("1000");
capitalCompareBaseModels[0].setDailyInAmt("0");
capitalCompareModel.setCapitalCompareBaseModel(capitalCompareBaseModels);
capitalCompareModel.setGBaseModel(gBaseModel);

try {
Call call = getBsfcCall(capitalCompareModel.getGBaseModel().getCustId());
// String custId = capitalCompareModel.getGBaseModel().getCustId();
//设置服务器调用地址
//call.setTargetEndpointAddress(new java.net.URL(url));
call.setOperationName("cMCompareRet");

QName qn = new QName("http://web.jk.financial.ouyeel.com/","GBaseRetModel");
// 注册序列化和反序列化类
call.registerTypeMapping(GBaseRetModel.class, qn, new BeanSerializerFactory(GBaseRetModel.class, qn),
new BeanDeserializerFactory(GBaseRetModel.class, qn));
QName qn1 = new QName("http://web.jk.financial.ouyeel.com", "GBaseModel");
call.registerTypeMapping(GBaseModel.class, qn1,
new BeanSerializerFactory(GBaseModel.class, qn1),
new BeanDeserializerFactory(GBaseModel.class, qn1));
QName qn2 = new QName("http://web.jk.financial.ouyeel.com","CapitalCompareBaseModel");
call.registerTypeMapping(CapitalCompareBaseModel.class, qn2,
new BeanSerializerFactory(CapitalCompareBaseModel.class, qn2),
new BeanDeserializerFactory(CapitalCompareBaseModel.class, qn2));
QName qn3 = new QName("http://web.jk.financial.ouyeel.com","CapitalCompareModel");
call.registerTypeMapping(CapitalCompareModel.class, qn3,
new BeanSerializerFactory(CapitalCompareModel.class, qn3),
new BeanDeserializerFactory(CapitalCompareModel.class, qn3));

// 设置返回类型
call.addParameter("capitalCompareModel",qn3,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(qn1, GBaseRetModel.class);
//call.setReturnType(qn,GBaseRetModel.class);
//call.setUseSOAPAction(true);
//call.addParameter("capitalCompareModel", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//call.addParameter("capitalCompareModel", org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);

Calendar begin = Calendar.getInstance();
log.info("组织代码:" + capitalCompareModel.getGBaseModel().getCustId());
log.info("包ID:" + capitalCompareModel.getGBaseModel().getInstrtNo());
log.info("交易开始:===发送资金占用===开始时间===" + begin.getTime());

gBaseRetModel = (GBaseRetModel) call.invoke(new Object[] { capitalCompareModel });
// 推送集团与股份

if (gBaseRetModel == null) {
log.error("中转程序返回空值");
} else {
log.info("返回包ID:" + gBaseRetModel.getInstrtNo());
log.info("返回retcode:" + gBaseRetModel.getRetCode());
log.info("返回retmsg:" + gBaseRetModel.getRetMsg());
}
Calendar end = Calendar.getInstance();
log.info("===交易结束:结束时间========" + end.getTime());
} catch (Exception e) {
e.printStackTrace();
}

return gBaseRetModel;
}

参数的数据结构是:
...全文
1186 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcsflilong 2019-03-13
  • 打赏
  • 举报
回复
引用 15 楼 Asura8 的回复:
引用 14 楼 bcsflilong 的回复:
参数要求是什么格式的
问题解决了,对方换成axis方式搭建webservice就成功了,可能用axis调用cfx搭建的webservice就会出现问题,谢谢了
CXF 和xfire 有的是有 都会有些莫名其妙的问题
Asura8 2019-03-13
  • 打赏
  • 举报
回复
引用 14 楼 bcsflilong 的回复:
参数要求是什么格式的
问题解决了,对方换成axis方式搭建webservice就成功了,可能用axis调用cfx搭建的webservice就会出现问题,谢谢了
bcsflilong 2019-03-07
  • 打赏
  • 举报
回复
参数要求是什么格式的
Asura8 2019-03-06
  • 打赏
  • 举报
回复
现在是服务端解析不了参数,客户端使用的是axis方式调用的webService,这又是啥问题?
Asura8 2019-03-05
  • 打赏
  • 举报
回复
[quote=引用 11 楼 JoeXBodhi 的回复:]
参数错误吧?[/quote我这的参数只能是这样,不能更改。能说具体点吗?
Asura8 2019-03-04
  • 打赏
  • 举报
回复
引用 6 楼 bcsflilong 的回复:
引用 3 楼 Asura8 的回复:
引用 1 楼 bcsflilong 的回复:
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
那就参数是否可以允许为空
好的谢谢您,我这边已经在让服务端修改了,待会测试下,请问下我添加参数以及设置返回值类型没有问题吧?
bcsflilong 2019-03-04
  • 打赏
  • 举报
回复
引用 3 楼 Asura8 的回复:
引用 1 楼 bcsflilong 的回复:
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
那就参数是否可以允许为空
Asura8 2019-03-04
  • 打赏
  • 举报
回复
引用 2 楼 红缎带 的回复:
GbaseModel 在xml文档中nillable默认false,不能为空;GBaseModel有个字段instrtType没有赋值
哦哦,明白您的意思了,我这边将所有参数的默认是设置成true,试试
Asura8 2019-03-04
  • 打赏
  • 举报
回复
引用 2 楼 红缎带 的回复:
GbaseModel 在xml文档中nillable默认false,不能为空;GBaseModel有个字段instrtType没有赋值
谢谢您的回复,但是这个也不为空啊,这个是CapitalCompareModel的属性
Asura8 2019-03-04
  • 打赏
  • 举报
回复
引用 1 楼 bcsflilong 的回复:
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
XBodhi. 2019-03-04
  • 打赏
  • 举报
回复
参数错误吧?
Asura8 2019-03-04
  • 打赏
  • 举报
回复
引用 8 楼 bcsflilong 的回复:
引用 7 楼 Asura8 的回复:
引用 6 楼 bcsflilong 的回复:
引用 3 楼 Asura8 的回复:
[quote=引用 1 楼 bcsflilong 的回复:]
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
那就参数是否可以允许为空
好的谢谢您,我这边已经在让服务端修改了,待会测试下,请问下我添加参数以及设置返回值类型没有问题吧?


引用 7 楼 Asura8 的回复:
引用 6 楼 bcsflilong 的回复:
引用 3 楼 Asura8 的回复:
引用 1 楼 bcsflilong 的回复:
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
那就参数是否可以允许为空
好的谢谢您,我这边已经在让服务端修改了,待会测试下,请问下我添加参数以及设置返回值类型没有问题吧?


这么看没什么问题 我一般调用webservice的时候都是用axis生成胡客户端 没这么自己写过[/quote] 我这个是中转服务器上代码,使用的代理形式相当于本地调中转服务器接口,中专服务器在调最终的服务器接口。愁死了调试几天了还是不行
Asura8 2019-03-04
  • 打赏
  • 举报
回复
引用 2 楼 红缎带 的回复:
GbaseModel 在xml文档中nillable默认false,不能为空;GBaseModel有个字段instrtType没有赋值
貌似没有效果,还是报同样的问题
bcsflilong 2019-03-04
  • 打赏
  • 举报
回复
引用 7 楼 Asura8 的回复:
引用 6 楼 bcsflilong 的回复:
引用 3 楼 Asura8 的回复:
引用 1 楼 bcsflilong 的回复:
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
那就参数是否可以允许为空
好的谢谢您,我这边已经在让服务端修改了,待会测试下,请问下我添加参数以及设置返回值类型没有问题吧?


引用 7 楼 Asura8 的回复:
引用 6 楼 bcsflilong 的回复:
引用 3 楼 Asura8 的回复:
引用 1 楼 bcsflilong 的回复:
CapitalCompareBaseModel 有没有implements Serializable
实现了序列化接口
那就参数是否可以允许为空
好的谢谢您,我这边已经在让服务端修改了,待会测试下,请问下我添加参数以及设置返回值类型没有问题吧?


这么看没什么问题 我一般调用webservice的时候都是用axis生成胡客户端 没这么自己写过
273971939 2019-03-01
  • 打赏
  • 举报
回复
GbaseModel 在xml文档中nillable默认false,不能为空;GBaseModel有个字段instrtType没有赋值
bcsflilong 2019-03-01
  • 打赏
  • 举报
回复
CapitalCompareBaseModel 有没有implements Serializable

81,092

社区成员

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

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