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" %>
 
 
 
 
 
 
 onclick="GetWebRequest()" value="GetWebRequest" />
 
 
 onclick="PostWebRequest()" value="PostWebRequest" />
 
 
 
 
运行结果
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" %>
 
 
 
 
 
 
 onclick="GetData()" value="GetData" />
 
 
 onclick="ExecuteRequest()" value="ExecuteRequest" />
 
 
 
 
运行结果
1、单击“GetData”按钮
可能提示超时,也可能提示终止,也可能显示与“PostTarget.aspx”相关的结果
2、单击“ExecuteRequest”按钮
提示executor已经开始处理请求,显示与“GetTarget.xml”相关的结果
作者:webabcd
[源码下载]

