以下均为个人理解,如有歧义,欢迎指教 '(0.0)'
1.什么是webService?
它是一种服务,为了实现某种功能 ,服务可以分为本地服务和网络服务,本地服务:就是我再自己电脑上就可以完成的事情。
网络服务器:就是我要用电脑做某件事,但是我的本机电脑不支持,我必须连接网络,在网络上做这件事,这种服务就叫网络服 务,webService就是一种网络服务,比如:我想查看天气预报,查看地图路线路......这些都是网络服务。
2.webService的有点:
webService是基于soap 协议,数据格式为:xml。使用webService发布的服务一般都是:通用公共性,与核心业务无关的。
1.与平台无关,可以跨平台。
2.与编程语言无关,可以是java,php。。。只要遵守相关协议就好
3.开发者部署,升级,维护简单
4.调用者,调用方式简单,可以实现多数数据,多种服务聚合
3.wsld文件(Web Services Description Languag)
网络服务描述语言,我理解就是描述的发布的服务的一些相关信息,是用xml格式编写的,
第一眼看一脸懵逼,乱七八糟,什么玩应?
此文件需要要从下往上看,里面主要包含,服务地址,服务包含的方法,每个方法的请求参数,响应结果等相关信息,
如下图:(详细的自行百度吧,我开发时知道这些就足够了)
4.如何调用webService?
调用方式应该有很多种,我只用过两种:
- 第1种是通过wsdl2java跟服务给的wsld文件生成本地客户端进行调用
- 第二种是通过 axis 方法调用。(下面参考代码就是用这种方式)
引入依赖:
<properties>
<axis2.version>1.7.8</axis2.version>
</properties>
<!--axis2 begin-->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-spring</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-xmlbeans</artifactId>
<version>${axis2.version}</version>
</dependency>
代码如下:
public String getCoreJsonService(String url,String requestMethod,String parameter) {
String result = "";
try {
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new URL(url));
call.setOperationName(requestMethod); // 需要请求的方法
call.addParameter("parameter", XMLType.SOAP_STRING, ParameterMode.IN); // 入参
call.setReturnType(XMLType.SOAP_STRING); // 设置返回值
result = (String) call.invoke(new Object[] {parameter});
log.info("请求结果:{}", result);
}catch (Exception e){
e.printStackTrace();
}
return result;
}