cxf调用c#的webservice

java调用c#的webservice,现在已经测试通过,而且用到了项目中。现在把实现方式和遇到的问题分享给大家。具体源码如下:


 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        String url = "http://10.1.5.83/Ciming.Service4JuDing/CM4APP.asmx?WSDL";
        org.apache.cxf.endpoint.Client client = dcf.createClient(url);
        // /GetSingleCheckModuleStatus 为接口中定义的方法名称
        String methodName = "GetSingleCheckModuleStatus";
        // 接口中定义参数顺序
        Object[] paramArr = { "第一参数", "第二参数", "第三参数" };

        Object[] objects = client.invoke(methodName, paramArr);
        // 输出调用结果
        System.out.println(objects[0].toString());

项目中有依赖的jar包(最精简的jar包了,我一个个试的,哪个类找不到,我才把jar包加进去的),下面是项目demo的源码下载地址:
http://download.csdn.net/download/zl544434558/8840361


下面说说其中遇到的问题及解决方案:
我按照这篇文章(http://blog.csdn.net/zl544434558/article/details/44855989)的步骤调用webservice一直报如下错误:
Caused by: org.apache.cxf.binding.soap.SoapFault: The request element http://tempuri.org/‘> was not recognized.

问题产生的原因是:和接口组进行确认后,发现之前文章调用c#并不是webservice,而是调用的页面值,类似java中的response返回json值。

解决方案是:把解决方案替换成这篇博客的解决方法。

另外说一个怪事:在c#中,方法的命名方式为首字母大写,而用eclipse中的webservice client 生成的文件默认方法名为小写,所以导致了上面的错误,但是把c#中的方法名改成小写,虽然能正确调通,但是c#返回的有值,而java这边接到的是null。原因目前未知。但是用这篇博客的解决方案不会产生类似的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值