[索引页] [源码下载]

新瓶旧酒ASP.NET AJAX(8) –
客户端脚论编程(Sys.Net命名空间下之WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor)

作者:webabcd

介绍
上学一下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

XML 1<?xml version=”1.0″ encoding=”utf-8″ ?>
XML 2<root>
XML 3  <employee>
XML 4    <name>webabcd</name>
XML 5    <age>27</age>
XML 6  </employee>
XML 7  <employee>
XML 8    <name>ge</name>
XML 9    <age>26</age>
XML 10  </employee>
XML 11</root>

PostTarget.aspx

XML 12XML 13<%XML 14@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”PostTarget.aspx.cs” Inherits=”ClientScripting_SysNet_PostTarget” %>
XML 15
XML 16<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
XML 17<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
XML 18<head runat=”server”>
XML 19    <title>Post Target测试页</title>
XML 20
XML 21XML 22    <script language=”C#” runat=”server”>XML 23
XML 24        
XML 25        protected void Page_Load(object sender, EventArgs e)
XML 26XML 27        XML 28{
XML 29            Context.Response.Cache.SetNoStore();
XML 30
XML 31            System.Threading.Thread.Sleep(new Random().Next(0, 1000));
XML 32
XML 33            if (HttpContext.Current.Request.Form[“Message”] != null)
XML 34XML 35            XML 36{
XML 37                Label1.Text = HttpContext.Current.Request.Form[“Message”];
XML 38            }
XML 39        }
XML 40        
XML 41    </script>
XML 42
XML 43</head>
XML 44<body>
XML 45    <form id=”form1″ runat=”server”>
XML 46        <div>
XML 47            <h1>
XML 48                <%= DateTime.Now.ToString() %>
XML 49            </h1>
XML 50            <p>
XML 51                <asp:TextBox ID=”Label1″ Text=”test” runat=”server” />
XML 52            </p>
XML 53        </div>
XML 54    </form>
XML 55</body>
XML 56</html>
XML 57

WebRequestAndWebRequestExecutor.js

XML 58var getPage;
XML 59var postPage;
XML 60var displayElement;
XML 61
XML 62function pageLoad()
XML 63XML 64XML 65{
XML 66    getPage = “GetTarget.xml”;
XML 67    postPage = “PostTarget.aspx”;
XML 68    displayElement = $get(“resultId”);
XML 69}
XML 70
XML 71function GetWebRequest()
XML 72XML 73XML 74{
XML 75    // 创建WebRequest对象
XML 76    var wRequest =  new Sys.Net.WebRequest();
XML 77    
XML 78    // url – 请求的url 
XML 79    wRequest.set_url(getPage);
XML 80    
XML 81    // getResolvedUrl() – 转换为可用url
XML 82    alert(wRequest.getResolvedUrl());
XML 83    
XML 84    // httpVerb – HTTP请求方式“GET”或“POST”
XML 85    wRequest.set_httpVerb(“GET”);
XML 86          
XML 87    // userContext – 用户上下文
XML 88    wRequest.set_userContext(“webabcd”);
XML 89            
XML 90    wRequest.add_completed(OnWebRequestCompleted);
XML 91    
XML 92    displayElement.innerHTML = “”;
XML 93               
XML 94    // invoke() – 执行要
XML 95    wRequest.invoke();
XML 96}
XML 97
XML 98function PostWebRequest()
XML 99XML 100XML 101{
XML 102    // 创建WebRequest对象
XML 103    var wRequest =  new Sys.Net.WebRequest();
XML 104    
XML 105    // url – 请求的url 
XML 106    wRequest.set_url(postPage);
XML 107    
XML 108    // timeout – 超时时间
XML 109    wRequest.set_timeout(500);
XML 110    
XML 111    var body = “Message=信息信息信息信息信息信息信息信息信息信息信息信息信息信息信息”
XML 112    // body – HTTP的Body内容
XML 113    wRequest.set_body(body);
XML 114
XML 115    // headers – HTTP的头信息
XML 116    wRequest.get_headers()[“Content-Length”] = body.length;
XML 117            
XML 118    wRequest.add_completed(OnWebRequestCompleted);
XML 119
XML 120    displayElement.innerHTML = “”;
XML 121               
XML 122    // invoke() – 执行要
XML 123    wRequest.invoke();  
XML 124}
XML 125
XML 126// executor – WebRequestExecutor对象
XML 127function OnWebRequestCompleted(executor, e) 
XML 128XML 129XML 130{        
XML 131    // responseAvailable – 请求是否成功完成
XML 132    if(executor.get_responseAvailable()) 
XML 133XML 134    XML 135{
XML 136        displayElement.innerHTML = “”;
XML 137   
XML 138        // 显示Web Request的用户上下文
XML 139        // webRequest – 获得同当前executor相关的WebRequest对象
XML 140        // userContext – 用户上下文
XML 141        displayElement.innerHTML += “User Context:” + executor.get_webRequest().get_userContext();
XML 142        displayElement.innerHTML += “<br /><br />”;
XML 143   
XML 144        // 显示Web Request的状态      
XML 145        // statusCode – 状态代码
XML 146        // statusText – 状态信息
XML 147        displayElement.innerHTML += “Status Code:” + executor.get_statusCode();
XML 148        displayElement.innerHTML += “Status Text:” + executor.get_statusText();
XML 149        displayElement.innerHTML += “<br /><br />”;
XML 150  
XML 151        // 显示Web Request的所有Header          
XML 152        // getAllResponseHeaders() – 获得任何匹信息
XML 153        displayElement.innerHTML += “Headers:” + executor.getAllResponseHeaders();
XML 154        displayElement.innerHTML += “<br /><br />”;
XML 155        
XML 156        // 显示Web Request的指定Header
XML 157        // getResponseHeader() – 获得指定头信息
XML 158        displayElement.innerHTML += executor.getResponseHeader(“Content-Type”);
XML 159        displayElement.innerHTML += “<br /><br />”;
XML 160        
XML 161        // 显示Web Request的Body                 
XML 162        displayElement.innerHTML += “Body:”;
XML 163        if (document.all)
XML 164XML 165        XML 166{
XML 167            // responseData – 响应当前恳请的Body文本
XML 168            displayElement.innerText += “\r\n” + executor.get_responseData();
XML 169        }
XML 170        else
XML 171XML 172        XML 173{
XML 174            // Firefox
XML 175            displayElement.textContent += “\r\n” + executor.get_responseData();
XML 176        }
XML 177        displayElement.innerHTML += “<br /><br />”;
XML 178        
XML 179        // 显示XML数据
XML 180        displayElement.innerHTML += “XML:”;
XML 181        if (document.all)
XML 182XML 183        XML 184{
XML 185            // xml – 响应当前求的XMLDOM对象
XML 186            displayElement.innerText += “\r\n” + executor.get_xml().xml;
XML 187        }
XML 188        else
XML 189XML 190        XML 191{
XML 192            // Firefox
XML 193            displayElement.textContent += “\r\n” + “首节点:” + executor.get_xml().documentElement.nodeName;
XML 194        }
XML 195    }
XML 196    else
XML 197XML 198    XML 199{
XML 200        // timedOut – 请求是否过
XML 201        if (executor.get_timedOut())
XML 202XML 203        XML 204{
XML 205            alert(“超时”);
XML 206        }
XML 207        // aborted – 请求是否给停止
XML 208        else if (executor.get_aborted())
XML 209XML 210        XML 211{
XML 212            alert(“请求让停”);
XML 213        }
XML 214    }
XML 215}
XML 216
XML 217// 通知ScriptManager这段脚论曾加载了  
XML 218if (typeof(Sys) !== “undefined”) Sys.Application.notifyScriptLoaded();

WebRequestAndWebRequestExecutor.aspx

XML 219XML 220<%XML 221@ Page Language=”C#” MasterPageFile=”~/Site.master” AutoEventWireup=”true” CodeFile=”WebRequestAndWebRequestExecutor.aspx.cs”
XML 222    Inherits=”ClientScripting_SysNet_WebRequestAndWebRequestExecutor” Title=”WebRequest和WebRequestExecutor” %>
XML 223
XML 224<asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”Server”>
XML 225    <asp:ScriptManagerProxy ID=”ScriptManagerProxy1″ runat=”Server”>
XML 226XML 227        <Scripts>XML 228
XML 229            <asp:ScriptReference Path=”~/ClientScripting/SysNet/WebRequestAndWebRequestExecutor.js” />
XML 230        </Scripts>
XML 231    </asp:ScriptManagerProxy>
XML 232    <p>
XML 233        <input type=”button” id=”btnGetWebRequest” onclick=”GetWebRequest()” value=”GetWebRequest” />
XML 234    </p>
XML 235    <p>
XML 236        <input type=”button” id=”btnPostWebRequest” onclick=”PostWebRequest()” value=”PostWebRequest” />
XML 237    </p>
XML 238    <hr />
XML 239    <div id=”resultId” style=”background-color: Aqua;”>
XML 240    </div>
XML 241</asp:Content>
XML 242

运行结果
1、单击“GetWebRequest”按钮
弹出框,信息:当前的URL
亮与“GetTarget.xml”相关的结果

2、单击“PostWebRequest”按钮
恐提示超时,也说不定来得与“PostTarget.aspx”相关的结果

WebRequestManagerAndXMLHttpExecutor.js

XML 243var displayElement;
XML 244
XML 245function pageLoad()
XML 246XML 247XML 248{
XML 249    displayElement = $get(“ResultId”);
XML 250    
XML 251    // defaultTimeout – 默认超时时间
XML 252    Sys.Net.WebRequestManager.set_defaultTimeout(500);
XML 253    
XML 254    Sys.Net.WebRequestManager.add_completedRequest(OnWebRequestCompleted);
XML 255        
XML 256    Sys.Net.WebRequestManager.add_invokingRequest
XML 257    (
XML 258        function (executor, e)
XML 259XML 260        XML 261{
XML 262            alert(‘调用要前’);
XML 263        }
XML 264    );
XML 265}
XML 266
XML 267function GetData()
XML 268XML 269XML 270{
XML 271    // 创建WebRequest对象
XML 272    wRequest =  new Sys.Net.WebRequest();
XML 273
XML 274    // url – 请求的url 
XML 275    wRequest.set_url(“PostTarget.aspx”);
XML 276      
XML 277    if (document.all)
XML 278XML 279    XML 280{
XML 281        displayElement.innerText = “”;
XML 282    }
XML 283    else
XML 284XML 285    XML 286{
XML 287        // Firefox 
XML 288        displayElement.textContent = “”;
XML 289    }
XML 290   
XML 291    // invoke() – 执行要
XML 292    wRequest.invoke();
XML 293    
XML 294    if (new Date().getSeconds() % 2 == 0)
XML 295XML 296    XML 297{
XML 298        // executor – 与眼前WebRequest对象相关的executor
XML 299        var executor = wRequest.get_executor();
XML 300     
XML 301        // abort() – 终止请求
XML 302        executor.abort();
XML 303        
XML 304        // aborted – 与当前executor相关的请求是否受终止
XML 305        alert(‘请求是否让停止:’ + executor.get_aborted());
XML 306    }
XML 307}
XML 308
XML 309// executor – WebRequestExecutor对象
XML 310function OnWebRequestCompleted(executor, e) 
XML 311XML 312XML 313{        
XML 314    // responseAvailable – 请求是否成就
XML 315    if(executor.get_responseAvailable()) 
XML 316XML 317    XML 318{
XML 319         // 显示Web Request的Body                 
XML 320        displayElement.innerHTML += “Body:”;
XML 321        if (document.all)
XML 322XML 323        XML 324{
XML 325            // responseData – 响应当前呼吁的Body文本
XML 326            displayElement.innerText += “\r\n” + executor.get_responseData();
XML 327        }
XML 328        else
XML 329XML 330        XML 331{
XML 332            // Firefox
XML 333            displayElement.textContent += “\r\n” + executor.get_responseData();
XML 334        }
XML 335        displayElement.innerHTML += “<br /><br />”;
XML 336    }
XML 337    else
XML 338XML 339    XML 340{
XML 341        // timedOut – 请求是否过期
XML 342        if (executor.get_timedOut())
XML 343XML 344        XML 345{
XML 346            alert(“超时”);
XML 347        }
XML 348        // aborted – 请求是否让停
XML 349        else if (executor.get_aborted())
XML 350XML 351        XML 352{
XML 353            alert(“请求被停止”);
XML 354        }
XML 355    }
XML 356}
XML 357
XML 358function ExecuteRequest()
XML 359XML 360XML 361{    
XML 362    // 创建WebRequest对象
XML 363    var wRequest =  new Sys.Net.WebRequest();
XML 364    
XML 365    // url – 请求的url 
XML 366    wRequest.set_url(“GetTarget.xml”);
XML 367    
XML 368    // 创建XMLHttpExecutor对象
XML 369    var executor = new Sys.Net.XMLHttpExecutor();
XML 370   
XML 371    // executor – 与当下WebRequest对象相关的executor
XML 372    wRequest.set_executor(executor); 
XML 373    
XML 374    // executeRequest() – 执行要
XML 375    executor.executeRequest();
XML 376
XML 377    // executor – 与眼前WebRequest对象相关的executor
XML 378    var executor =  wRequest.get_executor();
XML 379    
XML 380    // started – 是否就开始拍卖要
XML 381    alert(“executor是否都起来拍卖要:” + executor.get_started())
XML 382}
XML 383
XML 384// 通知ScriptManager这段脚论曾加载了  
XML 385if (typeof(Sys) !== “undefined”) Sys.Application.notifyScriptLoaded();

WebRequestManagerAndXMLHttpExecutor.aspx

XML 386XML 387<%XML 388@ Page Language=”C#” MasterPageFile=”~/Site.master” AutoEventWireup=”true” CodeFile=”WebRequestManagerAndXMLHttpExecutor.aspx.cs”
XML 389    Inherits=”ClientScripting_SysNet_WebRequestManagerAndXMLHttpExecutor” Title=”WebRequestManager和XMLHttpExecutor” %>
XML 390
XML 391<asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”Server”>
XML 392    <asp:ScriptManagerProxy ID=”ScriptManagerProxy1″ runat=”Server”>
XML 393XML 394        <scripts>XML 395
XML 396            <asp:ScriptReference Path=”~/ClientScripting/SysNet/WebRequestManagerAndXMLHttpExecutor.js” />
XML 397        </scripts>
XML 398    </asp:ScriptManagerProxy>
XML 399    <p>
XML 400        <input type=”button” id=”btnGetData” onclick=”GetData()” value=”GetData” />
XML 401    </p>
XML 402    <p>
XML 403        <input type=”button” id=”btnExecuteRequest” onclick=”ExecuteRequest()” value=”ExecuteRequest” />
XML 404    </p>
XML 405    <hr />
XML 406    <div id=”resultId” style=”background-color: Aqua;”>
XML 407    </div>
XML 408</asp:Content>
XML 409

运行结果
1、单击“GetData”按钮
唯恐提示超时,也或提示已,也可能来得与“PostTarget.aspx”相关的结果

2、单击“ExecuteRequest”按钮
提示executor已经开拍卖要,显示和“GetTarget.xml”相关的结果

OK [源码下载]

相关文章

网站地图xml地图