web service--基础概念
Posted 周无极
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web service--基础概念相关的知识,希望对你有一定的参考价值。
1. schema约束
一 几个重要知识:
1 . namespace 相当于Schema文档的id,它的值必须是唯一
2. targetNamespace 属性用来指定schema文档的namespace值
3. xmlns 属性 引入某个命名空间
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.zhouwuji.cn" elementFormDefault="qualified"> <!-- qualified 关联约定所有的标签 默认为unqualified --> <element name="books"> <complexType> <!-- 复合类型 unbounded 无限的 --> <sequence maxOccurs="unbounded"> <element name="book"> <complexType> <sequence maxOccurs="1"> <element name="bookname" type="string" /> <element name="author" type="string" /> <element name="price" type="string" /> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema>
<?xml version="1.0" encoding="UTF-8"?> <books xmlns="http://www.zhouwuji.cn" xmlns:ss="http://www.w3.org/2001/XMLSchema-instance" ss:schemaLocation="http://www.zhouwuji.cn test.xsd"> <book> <bookname>javascript</bookname> <author>淘气老师</author> <price>¥32.1</price> </book> </books> <!-- schema规范中: 1.所有的标签和属性都需要有schema文件来定义 2.所有的schema文件都需要有一个id,但在这里他叫namespace 3.namespace的值由什么来决定? 有targetNamespace属性来指定,必须制定schema文件的位置 4.如何引用一个schema约束? 属性:用xmlns属性 属性值:对应的schema文件的id 5.如果引入的schema不是w3c组织定义,必须指定schema文件的位置 6.shcema文件的位置有什么属性指定? 属性:schemaLocation 属性值:namespace path 7.如果引入N个约束,需要给n-1个取别名 -->
2 关于 Web Service 的几个问题
4、 为什么要用 Web service?
web service 能解决: 跨平台调用 、跨语言调用 、远程调用
3. Web Service 中的几个重要术语
重点:
8 CXF 框架的深入使用 查看代码
function reqWebService() { var name = document.getElementById("name").value; var date = \'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><authHeader><userId>wl</userId><password>1985310</password></authHeader>
</soap:Header><soap:Body><ns2:getOrderById xmlns:ns2="http://ws.zhouwuji.com/"><arg0>\' + name + \'</arg0></ns2:getOrderById></soap:Body></soap:Envelope>\'; var xmlhttp = getRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var result = xmlhttp.responseXML; var returnEle1 = result.getElementsByTagName("id")[0]; var returnEle2 = result.getElementsByTagName("name")[0]; var returnEle3 = result.getElementsByTagName("price")[0]; var vale1 = returnEle1.firstChild.data; var vale2 = returnEle2.firstChild.data; var vale3 = returnEle3.firstChild.data; alert(vale1+vale2+vale3); } }; //localhost 不能用ip请求 对于js讲跨域请求 协议/ip/端口 保持一致 否则跨域 xmlhttp.open("POST","http://localhost:8080/webservicesCXF-spring/orderws"); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send(date); } function getRequest() { var xmlhttp = null; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; }
$("#btn1").click(function() { var name = document.getElementById("name").value; var date = \'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><authHeader><userId>wl</userId><password>1985310</password>
</authHeader> </soap:Header><soap:Body><ns2:getOrderById xmlns:ns2="http://ws.zhouwuji.com/"><arg0>\' + name + \'</arg0></ns2:getOrderById></soap:Body></soap:Envelope>\'; alert(date); $.ajax({ type : "POST", url : "http://localhost:8080/webservicesCXF-spring/orderws", data : date, success : function(msg) { alert("------"); var $Result = $(msg); var value = $Result.find( "return").text(); alert(value); }, error : function(msg) { //alert("-----"+msg); }, dataType : "xml" }); });
String path = "http://localhost:8080/webservicesCXF-spring/orderws"; String data = "<soap:Envelope xmlns:soap=\'http://schemas.xmlsoap.org/soap/envelope/\'><soap:Header><authHeader><userId>wl</userId><password>1985310</password>
</authHeader></soap:Header><soap:Body><ns2:getOrderById xmlns:ns2=\'http://ws.zhouwuji.com/\'><arg0>" + name + "</arg0></ns2:getOrderById></soap:Body></soap:Envelope>"; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8"); OutputStream os = connection.getOutputStream(); os.write(data.getBytes("utf-8")); os.flush(); int code = connection.getResponseCode(); if(code==200){ InputStream is = connection.getInputStream(); response.setContentType("text/xml;charset=utf-8"); ServletOutputStream outputStream = response.getOutputStream(); int len=0; byte[] buff = new byte[1024]; while((len = is.read(buff))>0){ outputStream.write(buff,0,len); } outputStream.flush(); outputStream.close(); } }
b @WebMethod
c @WebResult
d @WebParam
e @XmlElement
注: 说明 即使是没有修改源代码,只修改了注解,客户端的代码也必须要重 新生成, 否则调用将会失败。
以上是关于web service--基础概念的主要内容,如果未能解决你的问题,请参考以下文章