We should cherish now

webservice应用汇总

一、什么是webservice?

1.WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用.可以进行跨平台、跨语言实现和调用。 

2.我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我们的程序(C/S或B/S程序)当中来,当用户从我们的网点看到天气信息时,他会认为我们为他提供了很多的信息服务,但其实我们什么也没有做,只是简单调用了一下服务器上的一段代码而已。

3.从WebService的工作模式上理解的话,它跟普通的Web程序(比如ASP、JSP等)并没有本质的区别,都是基于HTTP传输协议的程序。

4.WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。

二、soap协议的理解

  lSOAP-Simple Object Access Protocol(简单对象访问协议)
  SOAP作为一个基于XML语言的协议用于有网上传输数据。
  SOAP = 在HTTP的基础上+XML数据。
  SOAP是基于HTTP的。
  SOAP的组成如下:
    Envelope – 必须的部分。以XML的根元素出现。
    Headers – 可选的。
    Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
 图解:
 
 
三、wsdl说明书解读
图解:
  
四、java中发布一个webservice
  1、定义一个类OneService,并给这个类添加@WebService的注解
  2、类中至少包含一个对外公开的服务方法
  3、使用Endpoint.publish("服务地址",new OneService());
  图片解析:
  
 
五、webservice服务的引用
  1、通过wsimport生成客户端代码调用

  (1)使用jdk中wsimport命令

    wsimport -s . http://192.168.1.110:6773/hello?wsdl

    解析成java源码包,将包引用到项目中

   (2)客户端中的代码引用1

HelloServiceService haa=new HelloServiceService();
HelloService ha = haa.getHelloServicePort();
String str = hs.sayHello("张三");
system.out.printLn(str);

   (3)客户端编程的方式引用2

//声明wsdl地址
URL u =new URL("http://localhost:9999/one?wsdl");

 //获取命名空间
String ns = "http://wj.cn";

//第二个参数是一个完全限定名,WjService是服务
Service service = Service.create(u, new QName(ns, "WjService"));

//通过service的getPort方法返回指定的接口
One one= service.getPort(new QName(ns , "one") , One.class);

String res = one.sayHello("张三") ;

  2、js/ajax的调用

var http = null;
function createHttp(){
    if(window.XMLHttpRequest){
        http= new XMLHttpRequest();
    }else {
        http= new ActiveXObject("Mcrosoft.XMLHttp");
    }
}
function request(){
    var nm= document.getElementById("name").value;
    createHttp();
    var url="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo";
    var requestBody='<soapenv:Envelope                     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"'+
                    ' xmlns:q0="http://server.jaxb.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"'+
                    ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+
                    '<soapenv:Body><q0:sayHi><arg0>'+nm+'</arg0></q0:sayHi></soapenv:Body></soapenv:Envelope>';
    http.open("POST",url,true);
    http.onreadstatechange=function(){
        if(http.readystate==4){
            if(http.status==200){
                var res=http.responseXML;
                var ele=res.getElementsByTagName("return");
                var value=ele[0].firstChild.nodeValue;
                
                alert(value);
            }
        }
    }
}

  3、android上的引用HttpURLConnection

  

//定义地址
URL url =new URL("http://192.168.1.100:6789/hello");
//定义connect对象
HttpURLConnection conn=(HttpURLConnection ) url.openConnection();
//设置请求方式
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
//设置请求头内容为xml
conn.setRequestProperty("Content-Type" , "text/xml;charset=UTF-8");

//定义输出
OutputStream out =conn.getOutputStream();
//设置请求体
String requestBody="<><>"
//输出数据
out.write(requestBody.getBytes());

//定义输入
InputStream is =conn.getInputStream();
//
byte[] b = new byte[1024];
//定义缓存字符
StringBuffer sb=new StringBuffer();
int len=0;
while((len= is.read(b)) != -1){
    String s =new String (b,0 , len ,"UTF-8");
    sb.append(s);
}

is.close();
out.close();
conn.close();

 

六、总结

webservice的应用远不止于上面写道的,鄙人只是浅略的做一些汇总,有什么问题请见谅

webservice广泛用到的技术:
  TCP/IP:通用网络协议,被各种设备使用
  HTML(标准通用标记语言下的一个应用):通用用户界面,可以使用HTML标签显示数据
  Java:写一次可以在任何系统运行的通用编程语言,因为java具有跨平台特性
  XML(标准通用标记语言下的一个子集):通用数据表达语言,在web上传送结构化数据的容易方法

 

 

posted on 2014-08-30 11:04  Alai@2014  阅读(165)  评论(0编辑  收藏  举报