蓝猫恐龙时代主题曲:客户端脚本编程(8)(Sys.Net命名空间下的WebRequestManager、Web...
来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 01:26:01
客户端脚本编程(8)(Sys.Net命名空间下的WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor)
Ajax 2008-07-28 11:49:18 阅读16 评论0 字号:大中小 订阅
介绍学习一下Sys.Net命名空间下与web请求相关的类,WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor
关键
1、Sys.Net.WebRequestManager Class
·add_completedRequest(handler); - 添加请求完成后的处理器
·remove_completedRequest(handler); - 移除请求完成后的处理器
·add_invokingRequest(handler); - 添加处理调用请求的处理器
·remove_invokingRequest(handler); - 移除处理调用请求的处理器
·defaultTimeout - 默认超时时间
2、Sys.Net.WebRequest Class
·add_completed(handler); - 添加请求完成后的处理器
·remove_completed(handler); - 移除请求完成后的处理器
·invoke(); - 执行请求
·getResolvedUrl(); - 转换为可用url
·body - HTTP的Body内容
·executor - 与当前WebRequest对象相关的executor
·headers - HTTP的头信息
·httpVerb - HTTP请求方式“GET”或“POST”
·timeout - 请求超时时间
·url - 请求的url
·userContext - 用户上下文
3、Sys.Net.WebRequestExecutor Class
·abort(); - 终止请求
·executeRequest(); - 执行请求
·getAllResponseHeaders(); - 获得全部头信息
·getResponseHeader(key); - 获得指定头信息
·aborted - 请求是否被终止
·responseAvailable - 请求是否成功完成
·responseData - 响应当前请求的Body文本
·started - 是否已经开始处理请求
·statusCode - 状态代码
·statusText - 状态信息
·timedOut - 请求是否超时
·xml - 响应当前请求的XMLDOM对象
·webRequest - 获得与当前executor相关的WebRequest对象
4、Sys.Net.XMLHttpExecutor Class
·abort(); - 终止请求
·executeRequest(); - 执行请求
·getAllResponseHeaders(); - 获得全部头信息
·getResponseHeader(key); - 获得指定头信息
·aborted - 请求是否被终止
·responseAvailable - 请求是否成功完成
·responseData - 响应当前请求的Body文本
·started - 是否已经开始处理请求
·statusCode - 状态代码
·statusText - 状态信息
·timedOut - 请求是否超时
·xml - 响应当前请求的XMLDOM对象
示例
GetTarget.xml
PostTarget.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PostTarget.aspx.cs" Inherits="ClientScripting_SysNet_PostTarget" %>
WebRequestAndWebRequestExecutor.js
var getPage;
var postPage;
var displayElement;
function pageLoad()
{
getPage = "GetTarget.xml";
postPage = "PostTarget.aspx";
displayElement = $get("resultId");
}
function GetWebRequest()
{
// 创建WebRequest对象
var wRequest = new Sys.Net.WebRequest();
// url - 请求的url
wRequest.set_url(getPage);
// getResolvedUrl() - 转换为可用url
alert(wRequest.getResolvedUrl());
// httpVerb - HTTP请求方式“GET”或“POST”
wRequest.set_httpVerb("GET");
// userContext - 用户上下文
wRequest.set_userContext("webabcd");
wRequest.add_completed(OnWebRequestCompleted);
displayElement.innerHTML = "";
// invoke() - 执行请求
wRequest.invoke();
}
function PostWebRequest()
{
// 创建WebRequest对象
var wRequest = new Sys.Net.WebRequest();
// url - 请求的url
wRequest.set_url(postPage);
// timeout - 超时时间
wRequest.set_timeout(500);
var body = "Message=信息信息信息信息信息信息信息信息信息信息信息信息信息信息信息"
// body - HTTP的Body内容
wRequest.set_body(body);
// headers - HTTP的头信息
wRequest.get_headers()["Content-Length"] = body.length;
wRequest.add_completed(OnWebRequestCompleted);
displayElement.innerHTML = "";
// invoke() - 执行请求
wRequest.invoke();
}
// executor - WebRequestExecutor对象
function OnWebRequestCompleted(executor, e)
{
// responseAvailable - 请求是否成功完成
if(executor.get_responseAvailable())
{
displayElement.innerHTML = "";
// 显示Web Request的用户上下文
// webRequest - 获得与当前executor相关的WebRequest对象
// userContext - 用户上下文
displayElement.innerHTML += "User Context:" + executor.get_webRequest().get_userContext();
displayElement.innerHTML += "
";
// 显示Web Request的状态
// statusCode - 状态代码
// statusText - 状态信息
displayElement.innerHTML += "Status Code:" + executor.get_statusCode();
displayElement.innerHTML += "Status Text:" + executor.get_statusText();
displayElement.innerHTML += "
";
// 显示Web Request的所有Header
// getAllResponseHeaders() - 获得全部头信息
displayElement.innerHTML += "Headers:" + executor.getAllResponseHeaders();
displayElement.innerHTML += "
";
// 显示Web Request的指定Header
// getResponseHeader() - 获得指定头信息
displayElement.innerHTML += executor.getResponseHeader("Content-Type");
displayElement.innerHTML += "
";
// 显示Web Request的Body
displayElement.innerHTML += "Body:";
if (document.all)
{
// responseData - 响应当前请求的Body文本
displayElement.innerText += "\r\n" + executor.get_responseData();
}
else
{
// Firefox
displayElement.textContent += "\r\n" + executor.get_responseData();
}
displayElement.innerHTML += "
";
// 显示XML数据
displayElement.innerHTML += "XML:";
if (document.all)
{
// xml - 响应当前请求的XMLDOM对象
displayElement.innerText += "\r\n" + executor.get_xml().xml;
}
else
{
// Firefox
displayElement.textContent += "\r\n" + "首节点:" + executor.get_xml().documentElement.nodeName;
}
}
else
{
// timedOut - 请求是否超时
if (executor.get_timedOut())
{
alert("超时");
}
// aborted - 请求是否被终止
else if (executor.get_aborted())
{
alert("请求被终止");
}
}
}
// 通知ScriptManager这段脚本已经加载完毕
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
WebRequestAndWebRequestExecutor.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="WebRequestAndWebRequestExecutor.aspx.cs"
Inherits="ClientScripting_SysNet_WebRequestAndWebRequestExecutor" Title="WebRequest和WebRequestExecutor" %>
运行结果
1、单击“GetWebRequest”按钮
弹出框,信息:当前的URL
显示与“GetTarget.xml”相关的结果
2、单击“PostWebRequest”按钮
可能提示超时,也可能显示与“PostTarget.aspx”相关的结果
WebRequestManagerAndXMLHttpExecutor.js
var displayElement;
function pageLoad()
{
displayElement = $get("ResultId");
// defaultTimeout - 默认超时时间
Sys.Net.WebRequestManager.set_defaultTimeout(500);
Sys.Net.WebRequestManager.add_completedRequest(OnWebRequestCompleted);
Sys.Net.WebRequestManager.add_invokingRequest
(
function (executor, e)
{
alert('调用请求前');
}
);
}
function GetData()
{
// 创建WebRequest对象
wRequest = new Sys.Net.WebRequest();
// url - 请求的url
wRequest.set_url("PostTarget.aspx");
if (document.all)
{
displayElement.innerText = "";
}
else
{
// Firefox
displayElement.textContent = "";
}
// invoke() - 执行请求
wRequest.invoke();
if (new Date().getSeconds() % 2 == 0)
{
// executor - 与当前WebRequest对象相关的executor
var executor = wRequest.get_executor();
// abort() - 终止请求
executor.abort();
// aborted - 与当前executor相关的请求是否被终止
alert('请求是否被终止:' + executor.get_aborted());
}
}
// executor - WebRequestExecutor对象
function OnWebRequestCompleted(executor, e)
{
// responseAvailable - 请求是否成功完成
if(executor.get_responseAvailable())
{
// 显示Web Request的Body
displayElement.innerHTML += "Body:";
if (document.all)
{
// responseData - 响应当前请求的Body文本
displayElement.innerText += "\r\n" + executor.get_responseData();
}
else
{
// Firefox
displayElement.textContent += "\r\n" + executor.get_responseData();
}
displayElement.innerHTML += "
";
}
else
{
// timedOut - 请求是否超时
if (executor.get_timedOut())
{
alert("超时");
}
// aborted - 请求是否被终止
else if (executor.get_aborted())
{
alert("请求被终止");
}
}
}
function ExecuteRequest()
{
// 创建WebRequest对象
var wRequest = new Sys.Net.WebRequest();
// url - 请求的url
wRequest.set_url("GetTarget.xml");
// 创建XMLHttpExecutor对象
var executor = new Sys.Net.XMLHttpExecutor();
// executor - 与当前WebRequest对象相关的executor
wRequest.set_executor(executor);
// executeRequest() - 执行请求
executor.executeRequest();
// executor - 与当前WebRequest对象相关的executor
var executor = wRequest.get_executor();
// started - 是否已经开始处理请求
alert("executor是否已经开始处理请求:" + executor.get_started())
}
// 通知ScriptManager这段脚本已经加载完毕
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
WebRequestManagerAndXMLHttpExecutor.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="WebRequestManagerAndXMLHttpExecutor.aspx.cs"
Inherits="ClientScripting_SysNet_WebRequestManagerAndXMLHttpExecutor" Title="WebRequestManager和XMLHttpExecutor" %>
运行结果
1、单击“GetData”按钮
可能提示超时,也可能提示终止,也可能显示与“PostTarget.aspx”相关的结果
2、单击“ExecuteRequest”按钮
提示executor已经开始处理请求,显示与“GetTarget.xml”相关的结果
客户端脚本编程(8)(Sys.Net命名空间下的WebRequestManager、Web...
ASP.NET 2.0中客户端脚本的使用方法
.NET中获取服务器端控件的ID进行客户端编程
关闭WIN7的休眠功能,删除C盘下的hiberfil.sys文件,释放空间
在ASP.NET Web应用程序中缓存数据(编程缓存)
NET平台下WEB应用程序的部署(安装数据库和自动配置)
Ftp客户端编程
.Net Web系统的功能测试要点
ASP.net:DataTable中数据记录的统计-NET编程
Linux下有趣的命名
ASP.NET调用javascript脚本的方法总结
无人值守安装.Net Framework 3.5的批处理脚本1
无人值守安装.Net Framework 3.5的批处理脚本2
Linux下的多线程编程
Linux下的多线程编程
ASP.NET 虚拟目录继承根Web.Config的问题解决
对C#.NET编程规范的个人见解
如何理解.Net的三层架构--51编程网
Jquery中获取iframe的方法_ASp.net,编程联盟
8个对于Web设计和开发人员非常有用的在线工具 - CSDN.NET - CSDN软件研发...
ASP.NET中时间格式的转换 - ASP.NET技术论坛 - 编程论坛
脚本AI与脚本引擎(下)
在.Net中使用msxsl:script脚本块扩展XSLT的具体实践与应用_.NET Es...
VBS基础编程教程_windows脚本编程吧_贴吧