1.WebService原理
- Webservice是使用Http发送SOAP协议的数据的一种远程调用技术
- Webservice要开发服务端
- Webservice要开发客户端
- Webservice客户端开发需要阅读服务端的使用说明书(WSDL)
2.WebService模拟
- 服务器端
public class WeatherServer {
public static void main(String[] args) throws Exception {
Map<String, String> map=new HashMap<String, String>();
map.put("北京", "天气晴");
map.put("成都", "小雨");
map.put("深圳", "阴天");
//创建Socket
ServerSocket serverSocket=new ServerSocket(8888);
System.out.println("服务器端开始启动...监听端口:8888");
while(true){
//接收客户端的请求,accept为阻塞方法
Socket socket=serverSocket.accept();
//接收客户端数据
DataInputStream inputStream=new DataInputStream(socket.getInputStream());
//响应客户端数据
DataOutputStream outputStream=new DataOutputStream(socket.getOutputStream());
String city = inputStream.readUTF();
System.out.println("正在查询城市数据:"+city);
String result=map.get(city);
outputStream.writeUTF(result);
}
}
}
- 客户端程序
public class WeatherClient {
public static void main(String[] args) throws Exception {
Scanner input=new Scanner(System.in);
System.out.print("请输入要查询的城市:");
String city = input.next();
Socket socket=new Socket("127.0.0.1",8888);
//发送数据到服务器
DataOutputStream outputStream=new DataOutputStream(socket.getOutputStream());
//接收服务器发送的数据
DataInputStream inputStream=new DataInputStream(socket.getInputStream());
outputStream.writeUTF(city);
//readUTF也是一个阻塞的方法,输出查询结果
String result = inputStream.readUTF();
System.out.println("查询结果:"+result);
}
}
总结:webservice的底层原理,就是socket
3.WebService中的几个重要术语
3.1.WSDL(Web service definition languag)
直译 : WebService定义语言
- 对应一种类型的文件.wsdl (告诉客户端如何调用接口)
- 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式
- 一个web service对应一个唯一的wsdl文档
3.2.SOAP(simple object access protocal)
直译: 简单对象访问协议
1.是一种简单的、基于HTTP和XML的协议, 用于在WEB上交换结构化的数据
2.soap消息:请求消息和响应消息
3.http+xml片断
SOAP协议 = HTTP协议 + XML数据格式
SOAP1.1和SOAP1.2区别
- 相同点:
请求发送方式相同:都是使用POST
协议内容相同:都有Envelope和Body标签 - 不同点:
数据格式不同:content-type不同
SOAP1.1:text/xml;charset=utf-8
SOAP1.2:application/soap+xml;charset=utf-8 - 命名空间不同:
SOAP1.1:http://schemas.xmlsoap.org/soap/envelope/ SOAP1.2:http://www.w3.org/2003/05/soap-envelope
3.3.UDDI(Universal Description, Discovery and Integration)
UUDI:目录服务
UDDI:Universal Description, Discovery and Integration.可译为"通用描述,发现与集成服务"。 服务目录检索
企业可以使用它对 Web services 进行注册和搜索.
企业将自己提供的Web Service注册在UDDI,也可以使用别的企业在UDDI注册的web service服务,从而达到资源共享。UDDI旨在将全球的webservcie资源进行共享,促进全球经济合作。
- UDDI现状:
目前大部分企业使用webservice并不是必须使用UDDI,因为用户通过WSDL知道了web service的地址,可以直接通过WSDL调用webservice。