用途: 比如需要从其他系统获取信息,但是不能暴露自己得实现方式的时候。
比较常用得有: 1.HttpClient 2.WebService (推荐使用WebService)
一.简单介绍
服务端: 暴露出一个URL地址即可,列入
可以发现访问进去就是一个XML文件
从下往上看
<service name="FisrtWebServiceImplService">
这个fisrtWebServiceImplService就是暴露出来得一个方法
具体代码:
FisrtWebServiceImplService f = new FisrtWebServiceImplService(); //获取到一个对象
继续往上看
portType 咋们可以 用上面对象f FisrtWebServiceImpl port = f.getFisrtWebServiceImplPort();
operation具体方法 System.out.println(port.getAddressByPhoneNo("13120090804"));即可调到具体得方法
二.正式开始自己写服务,自己去调服务
1.先写服务端(Service)(注意要求JDK1.8)
1.1 创建一个接口
package webServiceWeb;
/**
* @author 叶成浪
* @time 2018年11月13日 - 下午4:38:26
* @email yechenglang521@163.com
**/
public interface FisrtWebService {
String getAddressByPhoneNo(String phoneNo);
}
1.2 接着写实现类(注意:采用注解@WebService)
package webServiceWeb.impl;
import javax.jws.WebService;
import webServiceWeb.FisrtWebService;
/**
* @author 叶成浪
* @time 2018年11月13日 - 下午4:40:04
* @email yechenglang521@163.com
**/
@WebService
public class FisrtWebServiceImpl implements FisrtWebService {
@Override
public String getAddressByPhoneNo(String phoneNo) {
return phoneNo+"归属于北京";
}
}
1.3 发布服务
package Test01WebService;
import javax.xml.ws.Endpoint;
import webServiceWeb.impl.FisrtWebServiceImpl;
public class Test01 {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8888/weather?wsdl", new FisrtWebServiceImpl());
System.out.println("发布成功");
}
}
服务端发布成功 (如果要停止服务 doc命令采用 taskkill /f /PID PID) 即可删除服务端口
2.客服端调用WebService
2.1 通过doc命令生成代码
wsimport -s . http://localhost:8888/weather?wsdl 即可把WebService代码生成到本地
2.2 客户端调取服务器方法获取具体得数据
package Test;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import webserviceweb.impl.FisrtWebServiceImpl;
public class Test02 {
public static void main(String[] args) {
//方式一 调服务器方法
// FisrtWebServiceImplService f = new FisrtWebServiceImplService();
// FisrtWebServiceImpl port = f.getFisrtWebServiceImplPort();
// System.out.println(port.getAddressByPhoneNo("13120090804"));
//方式二 调服务器方法
try {
Service service = Service.create(new URL("http://localhost:8888/weather?wsdl"),
new QName("http://impl.webServiceWeb/", "FisrtWebServiceImplService"));
FisrtWebServiceImpl impl = service.getPort(FisrtWebServiceImpl.class);
System.out.println(impl.getAddressByPhoneNo("13120090804"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}