上一篇:CSS制作标签卡TAB效果 >>
WebService Behavior 学习心得
目的:提供一种简单的方法使用和利用 SOAP,而不需具有 SOAP 实现的专业知识。
步骤:
1.下载Webservice.htc,许多网上的文章介绍该文件可以在微软的网站上找到,但我按照地址点进去时,只看到网页不存在的提示
2.创建WebService文件假设为MathService.asmx,其提供Add和Subtract两个服务函数
3.创建调用的网页文件Sample.htm(文件内容在下面详细分析)
4.将Webservice.htc复制到Sample.htm同一目录下
5.通过浏览器,浏览该网页
下面分析Sample.htm的内容(取自Msdn)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<LINK REL="stylesheet" HREF="/workshop/samples/samples.css" TYPE="text/css">
<SCRIPT language="JavaScript">
var iCallID;
var callObj;
function init()
{
// 定位WebService服务位置,并且为该服务制定一个名字 // 同一ServiceURl可以指定多个名字,Service为HTM文件中的HTML TAG,可以使用HTML中定义的任何标记
service.useService("..\\..\\MathService.asmx?WSDL","MyMath");
// 禁用Add按钮.
doAddButton.disabled = true;
service.onserviceavailable = enableButton();
}
function enableButton(){
doAddButton.disabled = false;
}
function doAdd(x, y){
// 同步调用 // 创建一个 the SOAPHeader object
var headObj = new Object();
// 创建 the call object
callObj = service.createCallOptions();
callObj.async = false;
callObj.params = new Array();
callObj.params.a = x;
callObj.params.b = y;
callObj.funcName = "Add";
callObj.SOAPHeader = new Array();
callObj.SOAPHeader[0] = headObj;
oSPAN.innerText = x + " + " + y + " = ";
// 使用回调函数"mathResults"调用
iCallID = service.MyMath.callService(mathResults, callObj);
mathResults(iCallID);
}
function doSubtraction(y, x){
// 异步调用,这是系统默认的调用方式(the default)
oSPAN.innerText = y + " - " + x + " = ";
// 调用Subtract
// 使用回调函数"mathResults"调用
iCallID = service.MyMath.callService(mathResults, "Subtract", y, x);
}
function mathResults(result){
// If there is an error, and the call came from the call() in init()
if(result.error){
// Pull the error information from the event.result.errorDetail properties
var xfaultcode = result.errorDetail.code;
var xfaultstring = result.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
oSPAN.innerText = xfaultcode + " " + xfaultstring + " " + xfaultsoap;
}// If there was no error
else{
// Show the arithmetic
oSPAN.innerText += result.value;
}
}
</SCRIPT>
</HEAD>
<body onload="init()">
//设置Div元素绑定WebService服务,在这里可以添加onresult="onWSresult()",在该事件中处理调用结果
<div id="service" style="behavior:url(../webservice.htc)"></div>
<BR><BR>
Equation : <SPAN id="oSPAN"></SPAN>
<BR><BR>
<BUTTON id="doAddButton" onclick="doAdd(5, 6);">Do Add function of 5 and 6</BUTTON>
<BUTTON onclick="doSubtraction(6, 5);">Do Subtraction of 6 and 5</BUTTON>
</body>
一些总结:
客户端必须包含Webservice.htc,将Webservice.htc放在服务器可访问的目录下,可以保证IE浏览器浏览时自动下载该文件,该过程对客户来说是透明的,但是使用其他的浏览器可能会无法使用该功能。
获取调用结果有两种方式
使用事件捕获:在Html标记中添加 onresult="onWSresult()",如:
<SCRIPT language="JavaScript">
var iCallID;
function init()
{
service.useService("/services/math.asmx?WSDL","MyMath");
iCallID = service.MyMath.callService("add",5,6);
}
function onWSresult()
{
if((event.result.error)&&(iCallID==event.result.id))
{
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = event.result.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
document.writeln("ERROR. Method call failed!");
document.writeln("Call ID:" + iCallID);
document.writeln("Fault Code:" + xfaultcode);
document.writeln("Fault String:" + xfaultstring);
document.writeln("SOAP Data:" + xfaultsoap);
}
else if(event.result.error == false)
{
document.writeln("Result received without errors!");
}
}
</script>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</body>
使用回调函数:(例子见上面)
调用分为同步调用和异步调用,异步调用为默认的调用方式:(例子见上面)
可以使用Callobj进行复杂的调用,设置调用时的参数,以及认证信息
支持有限的数据类型,请参看http://msdn.microsoft.com/workshop/author/webservice/datatypes.asp
下一篇:CSS基本布局16例 >>
相关文章:
- · asp记录日志程序
- · 在Web上用style实现完美颜色渐变
- · 为DataGrid 写一个 DropDownListColumn
- · 写了一个求最大值与最小值的函数
- · 模式窗口中提交数据的问题和解决
- · 用ASP编程控制在IIS建立Web站点
- · .Text blog的一点点安装心得
- · MIME小知识
- · 最近开发一个小型的OA
- · 文件删除函数
- · 表情发布(类似QQ表情)和UBB类(c#)
- · SqlServer数据库的备份和恢复措施
- · 身份证号编码规则
- · ASP中的Debug类(VBScript)
- · html编辑器中,有很多无法得到系统的字体,这个脚本可以
- · Microsoft的25位CDKey里有什么
- · 一个很强的验证脚本
- · 深入剖析C#继承机制(2)
- · 深入剖析C#继承机制(1)
- · 在c# Form中创建一个可拖动的矩形流程节点
- · 纯ASP(VBscript)写的全球IP地址搜
- · 实现有管理功能的ASP留言板
- · 一个ASP版的图片浏览管理器
- · Recordset对象方法
- · 利用Helix Server的SMIL支持在ASP中生成媒体流的播放列表
- · 运用Stored Procedure实现商城的月销售量报表
- · 运用Stored Procedure验证login的输入
- · ASP在线压(缩)解(压)rar
- · 如何实现无刷新的DropdownList联动效果
- · 查找Table中的单个列长度并判断是否属于改表(存储过程)
- · 将ASP纪录集输出成n列的的表格形式显示的方法
- · C#排序算法大全
- · 九月份精彩网络讲座让您深入了解微软最新开发技术
- · DHTML技巧--中止网页的提交
- · 分页控制
- · 用ASP实现中英文字体的自动选择
- · 使用ADSI创建虚拟目录
- · asp+的论坛列表程序---代码部分
