什么是webService?
webService的相关概念:
webService,就是一个部署在一个web服务器上的一个,向外界暴露并可以可以通过web进行调用的一个API,最早这个技术是由微软进行开发,后面为了成为W3C的标准,将此项技术分享到全球;它分为两个方面:1.使用编程方法使用web进行调用的这个应用程序叫做客户端;发布这个web应用程序的叫做服务端。
webSerivce的技术规则:
1. 基于web的系统级接口规范
- 一个普通适用标准 :http+xml
- 任何网络通信的操作系统
- 自包含、自描述、模块化
- 发布、定位、通过web调用
2. web service 技术和规则
- xml(可拓展标记语言)
- soap(简易对象访问协议) soap – http+xml->socket
- wsdl(web services 描述语言)
- uddi(通用描述、发现及整合)
3. 跨平台的可互操作性
- 基于xml
- 基于xsd(xml schema )
- 基于http
4. webservice 适用场景
- 跨防火墙的通信
- 异构系统间应用程序集成(jee:(EJB RMI)、php、c++、.net (com+))
WebService的优势介绍:
-
异构平台的互通性:
理论上, Web Service 最大的优势是提供了异构平台的无缝街接技术手段。由于不同的用户使用不同的硬件平台,不同的操作平台,不同的操作系统,不同的软件,不同的协议通信,这就产生了互相通信的需求。 Web Service 使任何两个应用程序,只要能读写XML,那么就能互相通信。简而言之,就是你现在使用的语言是java,而对方系统是C#进行编写的,为了访问的通用,我们就不可能要一个C#技术团队专门来对接对方的接口,使用webService就可以将这种不通用可以通用起来。
-
更广泛的软件复用
软件的复用技术通过组合已有模块来搭建应用程序,能大幅度提高软件的生产效率和质量。用户只要获得了描述 Web Service 的 WSDL (WebService Description Language – Web服务描述语言。调用该webservice api 的接口描述)文件,就可以方便地生成客户端代理,并通过代理访问 Web Service 。
3.成本低、可读性强、应用范围广
Web Service 可用基于 XML 的 SOAP ( Simple Object Access Protocol(简单对象访问协议) )来表示数据和调用请求。并且通过 HTTP 协议传输 XML 格式的数据;
4.迅捷的软件发行方式
Web Service 将彻底地改变软件的发行方式。软件供应商可以把软件分解成若Web Service 模块构成的系统,直接在 Web 上发布;
webService的原理:
webService调用的相关get代码
package com.ws.b;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
/**
* 调用第三方的webservice服务,获取电话号码信息
* @author 22718
*/
public class MobileCodeService {
//http-get方法访问webService
public void get(String mobileCode,String userID) throws Exception{
//定义一个URL来调用webService的接口
URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode="+mobileCode+"&userID="+userID);
//获取http访问链接
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
//设置链接时长
conn.setConnectTimeout(5000);
//设置链接的访问方法
conn.setRequestMethod("GET");
//如果访问返回的结果码是200,即访问成功
if(conn.getResponseCode()==HttpURLConnection.HTTP_OK){
//定义外部访问流
InputStream is = conn.getInputStream();
//定义内部内存流
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//定义字节数组存储数据
byte[] b=new byte[1024];
//定义len进行接收,初始化值-1
int len=-1;
//不断循环数据,将读取的数据放入到内存流中
while((len=is.read(b))!=-1){
//输出内存流的信息
baos.write(b, 0, len);
}
System.out.println("GET请求获取的数据:"+baos.toString());
//关闭内存流
baos.close();
//关闭外部流
is.close();
}
}
public static void main(String[] args) throws Exception {
MobileCodeService ws=new MobileCodeService();
ws.get("15150533689", "");
}
}