java调用C# WebService接口

    这两天在负责公司系统与其他公司的平台订单的对接工作,在没看对接文档前,心里还想着到时候照着接口文档的参数规范去传,应该很容易可以完成。但当拿到对方的接口文档,看到WebService的时候,心情就变了,没有写过java调webService接口,怎么办……

    没有接触过,就先查了查,看看示例,该用什么方式去调。看到的方式大概有三种:1. HttpClient 2. HttpURLConnection 3. 插件生成客户端代码。

    有了方向之后,就开始写代码了,采用的方式是HttpClient,上午写好了,下午开始调试,就一直出问题,各种HTTP请求的错误码,404,400,500,都遇到过,不明白为什么调不通,就开始换其他方式,又改成了用HttpURLConnection的方式,还是返回错误结果。

    找对接的那边的人问了问,他跟我说了句,他们服务使用C#写的,于是我又换了个方式,直接用的RPC的Call方法调用,结果可以调通了,但是得到的一直是他们返回给我的错误码,通过对方的监听,他告诉我他那边接收到的参数都是null值,又开始查资料找解决方法,尝试了各种解决方案,最后还是没能解决。

    第二天一到公司,没其他办法了,就尝试用生成客户端代码的方法。我的开发工具用的是MyEclipse,自带web Service的插件,所以就直接用了,其他开发工具的话,没有自带插件,可以先下载安装。下面就看看如何用myEclipse生成我们的Java代码:

        1. 新建一个WebService Client项目

    这里写图片描述

        2. 输入wsdl url地址或导入wsdl文件

    这里写图片描述

        3. 之后就一直next或直接finish,生成之后,我们就可以在项目中看到java类,就是通过接口服务生成的

    这里写图片描述

        4. 生成代码之后,我们不需要做任何改动,就可以直接写个main方法测试其中的接口了。下面是我自己测试的一个代码示例:

public static void main(String[] args) {
        String AppKey = "123456";
        Long currentTime = System.currentTimeMillis();
        String AppSign = createSign(AppKey, currentTime.toString());
        EC service = new EC();
        ECSoap portType = service.getECSoap();
        String result = portType.login(AppKey, AppSign, currentTime.toString());
        System.out.print(result);
    }

        有了这套代码之后,我就将这些直接搬到自己的项目中,添加一些关于webService的jar包,我就可以直接调用他们的接口了。一天的时间,也总算是完成了和对方的对接工作。

        对接完成了,但其实还是不太明白为什么自己用HttpClient或HttpURLConnection等各种方式都行不通。第二天还想着找个和他们对接过的人请教请教用的什么方式,早上用了这个插件方法成功了,就一直在沟通联调,也顾不上问他,等有时间了,我还是要问问,或许能解答我的疑惑。

相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页