首页 > 代码库 > WebService学习笔记-Ajax请求Webservice

WebService学习笔记-Ajax请求Webservice

Webservice地址为 http://192.168.13.232:8989/ws_01/umgsai

JSP页面地址为 http://192.168.13.232:8080/Demo/index.jsp


Webservice的请求体如下

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.umgsai.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <q0:sayHello>
      <arg0>sa</arg0>
    </q0:sayHello>
  </soapenv:Body>
</soapenv:Envelope>


Webservice的响应体如下

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:sayHelloResponse xmlns:ns2="http://ws.umgsai.com/">
      <return>Hello sa</return>
    </ns2:sayHelloResponse>
  </S:Body>
</S:Envelope>


JSP页面如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://www.mamicode.com/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
	var url = "http://192.168.13.232:8989/ws_01/umgsai";
	$(function(){
		$("#WebserviceJQuery").click(function(){
			var name = document.getElementById("username").value;
			//请求体
			var data = ‘<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.umgsai.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><q0:sayHello><arg0>‘ + name + ‘</arg0></q0:sayHello></soapenv:Body></soapenv:Envelope>‘;
			/*
			$.post(url, data, function(msg){
				var $Result = $(msg);
				var value = $Result.find("return").text();
				alert(value);
			},"xml");
			*/
			$.ajax({
				type:"POST",
				url:url,
				data:data,
				success:function(msg){
					var $Result = $(msg);
					var value = $Result.find("return").text();
					alert(value);
				},
				error:function(msg){
					alert("错误信息:" + msg);
				},
				datatype:"xml",
				contentType:"text/xml;charset=utf-8"
			});
		});
	});

	function reqWebservice() {
		var name = document.getElementById("username").value;
		//请求体
		var data = ‘<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.umgsai.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><q0:sayHello><arg0>‘ + name + ‘</arg0></q0:sayHello></soapenv:Body></soapenv:Envelope>‘;
		var request = GetXmlHttpObject();
		request.onreadystatechange = function(){
			if(request.readyState == 4 && request.status == 200){
				var result = request.responseXML;
				//alert(result);
				var returnElement = result.getElementsByTagName("return")[0];
				var value = returnElement.firstChild.data;
				alert(value);
			}
		};
		//响应体 <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
/*
		<S:Body>
		    <ns2:sayHelloResponse xmlns:ns2="http://ws.umgsai.com/">
		      <return>Hello sa</return>
		    </ns2:sayHelloResponse>
		  </S:Body>
		</S:Envelope>

*/
		request.open("POST", url);
		request.setRequestHeader("Content-type", "text/xml;charset=utf-8");
		request.send(data);
	}

	function GetXmlHttpObject() {
		var xmlHttp = null;
		try {
			// Firefox, Opera 8.0+, Safari
			xmlHttp = new XMLHttpRequest();
		} catch (e) {
			// Internet Explorer
			try {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		return xmlHttp;
	}
</script>
</head>
<body>
	name:
	<input id="username" name="username" value="" />
	<button onClick="reqWebservice()">Ajax请求Webservice</button>
	<button id="WebserviceJQuery">Ajax请求Webservice with JQuery</button>
</body>
</html>


存在跨域访问的问题,只能通过 http://192.168.13.232:8080/Demo/index.jsp 来访问。

通过 http://localhost:8080/Demo/index.jsp来访问是提示错误。



本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1563938

WebService学习笔记-Ajax请求Webservice