二、通过Ajax调用webService服务

1、上一篇WebService文章介绍了基本的创建、调用WebService服务的形式,今天学习了一下通过Ajax调用WebService服务的形式,

2、首先启动一个WebService服务,代码如下:

package com.wang.webservice.service;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class HelloService {
	public String sayHello( String name ){
		System.out.println(name);
		return "hello " + name;
	}	
	public static void main(String[] args) {
		Endpoint.publish("http://127.0.0.1:1234/helloservice", new HelloService());
	}
}

 3、启动后,创建一个html文件,准备通过ajax请求WebService服务,直接上代码,代码中有说明:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>通过Ajax调用webService服务</title>
</head>
<script>
	/* ActiveXObject有浏览器兼容问题 */
    var xhr = new ActiveXObject("Microsoft.XMLHTTP");
  
    function sendMsg(){
    	var name = document.getElementById("name").value;
    	
		//服务地址
		var wsUrl = "http://127.0.0.1:1234/helloservice";

		//请求体
		var soap = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://service.webservice.wang.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>';

		//打开连接
		xhr.open('POST', wsUrl, true);

		//重新设置请求头
		xhr.setRequestHeader("Content-Type", "text/xml;charset=UTF-8");

		//设置回调函数
		xhr.onreadystatechange = _back;

		//发送请求
		xhr.send(soap);
	}
	
	function _back(){
		
		if(xhr.readyState == 4){
		
			if( xhr.status == 200 ){
				/* 有浏览器兼容问题 */
				var ret = xhr.responseXML;
			 	var msg = ret.getElementsByTagName('return')[0];
			 	alert(msg);
				
			}
		}
	}
	
</script>

<body>
	<input type="button" value="发送soap请求" οnclick="sendMsg()"  />
	<input  type="text" id="name"/>
</body>
</html>

此时,用IE浏览器打开这个HTML文件,基本就能看到效果了。

代码中,除了请求体外,其他的都好理解,那么这个请求体是哪来的哪儿??

4、动过myeclipse(eclipse)拦截工具获得请求体。上图:



 注:http://127.0.0.1:1234/helloservice?wsdl 上篇文章中介绍的。。



 

 

 

通过Ajax调用webService服务完毕。。。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 AJAX 调用 WebService 有以下几个步骤: 1. 在 HTML 页面中引入 jQuery 库(如果项目中已经引入了 jQuery,则可以跳过此步骤)。 ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 2. 在 JavaScript 中编写 AJAX 调用代码。下面是一个示例: ```javascript $(document).ready(function() { $("#btnSearch").click(function() { var keyword = $("#txtKeyword").val(); $.ajax({ type: "POST", url: "WebService.asmx/GetSearchResult", data: "{'keyword':'" + keyword + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { $("#searchResult").html(data.d); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); }); }); ``` 解释一下上面代码中的各个参数: * `type`:请求方式,可以是 "GET" 或 "POST"。 * `url`:WebService 的地址,需要根据实际情况修改。 * `data`:请求参数,需要按照指定的格式传递,这里使用的是 JSON 格式。 * `contentType`:请求数据类型,需要设置为 "application/json; charset=utf-8"。 * `dataType`:响应数据类型,需要设置为 "json"。 * `success`:请求成功后的回调函数。 * `error`:请求失败后的回调函数。 3. 在 WebService 中编写对应的方法。例如,上面代码中调用的是 `GetSearchResult` 方法,那么在 WebService 中就需要定义这个方法,代码如下: ```csharp [WebMethod] public string GetSearchResult(string keyword) { // 根据关键字查询数据库,并返回查询结果 return "查询结果"; } ``` 注意,方法需要添加 `[WebMethod]` 标记,同时需要设置返回值类型和参数类型。 这样就完成了 AJAX 调用 WebService 的过程。需要注意的是,由于 AJAX 调用是异步的,因此需要在回调函数中更新页面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值