java调用C# webService发布的接口
java调用C# webService方式有很多种我这里只介绍一种
首先需要引入axis的jar包 axis的maven坐标如下
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
也可以到这个地址搜索然后复制坐标输入即可 https://mvnrepository.com/
下面是调用列子代码:
1 //接口地址
2 String oaurl = Preferences.getInstance().getOAURL();
3 String result = null;
4 try {
5 //命名空间我这里是例子代码随便写的命名空间地址(具体地址可以通过wsdl文件查看或者问接口提供方获取))
6 String soapaction = "http://localhost.org/";
7 Service service = new Service();
8 //创建Call对象,Call对象用于调用服务
9 Call call = (Call) service.createCall();
10 //设置webServiced的URL
11 call.setTargetEndpointAddress(oaurl);
12 //设置调用方法名
13 call.setOperationName(new QName(soapaction, "GetJson"));//设置要调用的方法名
14 //设置请求参数(str是接口的入参变量,具体查看你调用的接口)
15 call.addParameter(new QName(soapaction , "str"),
16 org.apache.axis.encoding.XMLType.XSD_STRING,
17 javax.xml.rpc.ParameterMode.IN);
18
19 /**
20 * 也可以这样设置请求参数,具体根据接口入参方式选择
21 * call.addParameter(new QName(soapaction , "userName"),
22 * org.apache.axis.encoding.XMLType.XSD_STRING,
23 * javax.xml.rpc.ParameterMode.IN);
24 * call.addParameter(new QName(soapaction , "phone"),
25 * org.apache.axis.encoding.XMLType.XSD_STRING,
26 * javax.xml.rpc.ParameterMode.IN);
27 * */
28 //设置返回结果类型
29 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
30 //call.setReturnType(new QName(soapaction, "GetJson"), String.class);
31 call.setUseSOAPAction(true);
32 call.setSOAPActionURI(soapaction + "GetJson");
33
34 Map<String, Object> params = new HashMap<>();
35
36 List<String> list = new ArrayList<>();
37
38 String[] address = new String[]{"http://www.baidu.com/1.jpg"};
39 String[] fileName = new String[]{"附件1"};
40 String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
41 String[] fileDate = new String[]{dateStr};
42
43 Collections.addAll(list , "2019-10-14 09:48:35.930", "slbh", "101000001", "hm", "20", "ch", "cnxh", "bw", "q6q", "gyh",
44 "kj", "lxr", "dh", "符合申请");
45 params.put("flowname", "符合申请");
46 params.put("username", "pinlin");
47 params.put("data" , list);
48 params.put("attach_count", "1");
49 params.put("address" ,address);
50 params.put("filename" , fileName);
51 params.put("filedate", fileDate);
52
53 //转换成JSON字符串
54 String strs = JSON.toJSONString(params);
55 System.out.println("str============" + strs);
56
57 /**执行接口调用并得到返回接口
58 *
59 * result = (String) call.invoke(new Object[]{"pinlin","123456899"} );
60 * 如果上面设置参数时设置多个的。传参顺序要设置的顺序要一致
61 * */
62 result = (String) call.invoke(new Object[]{strs});
63 System.out.println("result = " + result);
64 } catch (Exception e) {
65 e.printStackTrace();
66 log.error(e.toString());
67 }
如何查看通过接口地址得到wsdl,这里以天气预报公共的接口为列子,步骤如下
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
在接口地址后面加上?wsdl即可 这里介绍一些基本信息如下:

也可以直接地址查看接口有那些方法,步骤如下:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

可以点击这些方法名进入里面会有说明调用方式,具体如下:


调用C# webservice的发布的API也可以通过wsdl文件直接客户端代码调用,有apache-cxf,这个我使用过,但是生成的代码我调用不成功,不知道是不是我操作不对,具体问题这个我还在探索中。
本人水平有限也是我第一次补发博客文章,有哪里写不好或者不对的地方,还请大家多多指点。
由于第一次写博客,排版有些不好还请谅解。