• 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。

    原因眼下未知。

    可是用这篇博客的解决方式不会产生相似的问题。

  • 相关阅读:
    Java日期计算之Joda-Time
    JAVABEAN EJB POJO区别
    Android 知识体系学习路线
    Linux学习路线(尚观)
    嵌入式学习课程实战(尚观)
    嵌入式学习课程体系(尚观)
    嵌入式学习路线尚观
    C/C++的培训路线(达内)
    部分C/C++书籍
    基本路线
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5170928.html
Copyright © 2020-2023  润新知