WebRequest 类
Sys.Net.WebRequest 类
var wRequest = new Sys.Net.WebRequest();
![](http://i.msdn.microsoft.com/Global/Images/clear.gif)
名称 | 说明 |
---|---|
注册与 Web 请求实例关联的事件处理程序。 | |
引发关联 Sys.Net.WebRequest 实例的完成事件。 | |
获取 Web 请求实例的解析后的 URL。 | |
为 Web 请求实例发出网络调用。 | |
移除与 Web 请求实例关联的事件处理程序。 | |
获取或设置 Web 请求的 HTTP 正文。 | |
获取或设置关联 Web 请求实例的执行器。 | |
获取 Web 请求的 HTTP 标头。 | |
获取或设置用于发出 Web 请求的 Web 请求 HTTP 谓词。 | |
获取或设置 Web 请求实例的超时值。 | |
获取或设置 Web 请求实例的 URL。 | |
获取或设置与 Web 请求实例关联的用户上下文。 |
![](http://i.msdn.microsoft.com/Global/Images/clear.gif)
异步通信层类使用 WebRequest 类发出 Web 请求。一般不在应用程序中直接使用此类型,而是通过使用代理方法,从浏览器调用 Web 服务方法或静态页方法。有关更多信息,请参见向客户端脚本公开 Web 服务。
但是,可以在以下情况下创建和使用 WebRequest 实例:
-
当您希望发出非简单 Web 服务方法调用的网络请求时。
-
当您希望直接设置 HTTP 请求属性时。
-
当您使用基于 Sys.Net.WebRequestExecutor 类的自定义执行器时。
![](http://i.msdn.microsoft.com/Global/Images/clear.gif)
下面的示例演示如何创建 WebRequest 类的实例来发出 GET Web 请求。该示例演示了一个网页以及用来与 WebRequest 类进行交互的客户端脚本。
Visual Basic
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head id="Head1" runat="server"> <title> Using WebRequest </title> <style type="text/css"> body { font: 11pt Trebuchet MS; font-color: #000000; padding-top: 72px; text-align: center } .text { font: 8pt Trebuchet MS } </style> </head> <body> <h2>Using WebRequest</h2> <form id="form1" runat="server"> <asp:ScriptManager runat="server" ID="ScriptManagerId"> <Scripts> <asp:ScriptReference Path="WebRequest.js" /> </Scripts> </asp:ScriptManager> </form> <table> <tr align="left"> <td>Make GET Request:</td> <td> <button id="Button1" οnclick="GetWebRequest()">GET</button> </td> </tr> <tr align="left"> <td>Request Body:</td> <td> <button id="Button2" οnclick="PostWebRequest()">Body</button> </td> </tr> <tr align="left"> <td>Request Timeout:</td> <td> <button id="Button3" οnclick="WebRequestTimeout()">Timeout</button> </td> </tr> <tr align="left"> <td>Request Completed Handler:</td> <td> <button id="Button4" οnclick="WebRequestCompleted()">Completed Handler</button> </td> </tr> <tr align="left"> <td>Resolved Url:</td> <td> <button id="Button5" οnclick="GetWebRequestResolvedUrl()">Resolved Url</button> </td> </tr> <tr align="left"> <td>Request Executor:</td> <td> <button id="Button6" οnclick="WebRequestExecutor()">Executor</button> </td> </tr> <tr align="left"> <td>Request Header:</td> <td> <button id="Button7" οnclick="WebRequestHeader()">Header</button> </td> </tr> </table> <hr /> <div id="ResultId" style="background-color:Aqua;"></div> </body> </html>
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head id="Head1" runat="server"> <title> Using WebRequest </title> <style type="text/css"> body { font: 11pt Trebuchet MS; font-color: #000000; padding-top: 72px; text-align: center } .text { font: 8pt Trebuchet MS } </style> </head> <body> <h2>Using WebRequest</h2> <form id="form1" runat="server"> <asp:ScriptManager runat="server" ID="ScriptManagerId"> <Scripts> <asp:ScriptReference Path="WebRequest.js" /> </Scripts> </asp:ScriptManager> </form> <table> <tr align="left"> <td>Make GET Request:</td> <td> <button id="Button1" οnclick="GetWebRequest()">GET</button> </td> </tr> <tr align="left"> <td>Request Body:</td> <td> <button id="Button2" οnclick="PostWebRequest()">Body</button> </td> </tr> <tr align="left"> <td>Request Timeout:</td> <td> <button id="Button3" οnclick="WebRequestTimeout()">Timeout</button> </td> </tr> <tr align="left"> <td>Request Completed Handler:</td> <td> <button id="Button4" οnclick="WebRequestCompleted()">Completed Handler</button> </td> </tr> <tr align="left"> <td>Resolved Url:</td> <td> <button id="Button5" οnclick="GetWebRequestResolvedUrl()">Resolved Url</button> </td> </tr> <tr align="left"> <td>Request Executor:</td> <td> <button id="Button6" οnclick="WebRequestExecutor()">Executor</button> </td> </tr> <tr align="left"> <td>Request Header:</td> <td> <button id="Button7" οnclick="WebRequestHeader()">Header</button> </td> </tr> </table> <hr /> <div id="ResultId" style="background-color:Aqua;"></div> </body> </html>
var getPage; var postPage; var displayElement; function pageLoad() { getPage = "getTarget.htm"; postPage = "postTarget.aspx"; displayElement = $get("ResultId"); } // This function performs a GET Web request // to retrieve information from the Url specified in // the query string. function GetWebRequest() { alert("Performing Get Web request."); // Instantiate the WebRequest object. var wRequest = new Sys.Net.WebRequest(); // Set the request Url. wRequest.set_url(getPage); // Set the request verb. wRequest.set_httpVerb("GET"); // Set user's context wRequest.set_userContext("user's context"); // Set the web request completed event handler, // for processing return data. wRequest.add_completed(OnWebRequestCompleted); // Clear the results page element. displayElement.innerHTML = ""; // Execute the request. wRequest.invoke(); } // This function performs a POST Web request // to upload information to the resource // identified by the Url. function PostWebRequest() { // Instantiate the WebRequest object. var wRequest = new Sys.Net.WebRequest(); // Set the request Url. wRequest.set_url(postPage); // Set the request verb. wRequest.set_httpVerb("POST"); var body = "Message=Hello! Do you hear me?" wRequest.set_body(body); wRequest.get_headers()["Content-Length"] = body.length; // Set the web request completed event handler, // for processing return data. wRequest.add_completed(OnWebRequestCompleted); // Clear the results page element. displayElement.innerHTML = ""; // Execute the request. wRequest.invoke(); } // This function adds and removes the // Web request completed event handler. function WebRequestCompleted() { // Instantiate the WebRequest. var wRequest = new Sys.Net.WebRequest(); // Set the request Url. wRequest.set_url(getPage); // Set the web request completed event handler, // for processing return data. wRequest.add_completed(OnWebRequestCompleted); alert("Added Web request completed handler"); // Remove the web request completed event handler. // Comment the following two lines if you want to // use the handler. wRequest.remove_completed(OnWebRequestCompleted); alert("Removed handler; the Web request return is not processed."); // Execute the request. wRequest.invoke(); } // This function gets the resolved Url // of the Web request instance. function GetWebRequestResolvedUrl() { // Instantiate the WebRequest. var wRequest = new Sys.Net.WebRequest(); // Set the request Url. wRequest.set_url(getPage); // Get the web request completed event handler. var resUrl = wRequest.getResolvedUrl(); alert("Resolved Url: " + resUrl); // Set the web request completed event handler, // for processing return data. wRequest.add_completed(OnWebRequestCompleted); // Execute the request. wRequest.invoke(); } // This function gets and sets the // Web request time out. function WebRequestTimeout() { // Instantiate the WebRequest. var wRequest = new Sys.Net.WebRequest(); // Set the request Url. wRequest.set_url(getPage); var defaultTimeout = wRequest.get_timeout(); // Set request timeout to 100 msec. wRequest.set_timeout(100); var newTimeout = wRequest.get_timeout(); alert("Default timeout: " + defaultTimeout); alert("New timeout: " + newTimeout); // Set the web request completed event handler, // for processing return data. wRequest.add_completed(OnWebRequestCompleted); // Execute the request. wRequest.invoke(); } // This function sets the Web request // executor, replacing the default one. function WebRequestExecutor() { // Instantiate the WebRequest. var wRequest = new Sys.Net.WebRequest(); // Create the executor. In this case it is an // XMLHttpExecutor, equivalent to the default // executor. But, you can create a custom one. var executor = new Sys.Net.XMLHttpExecutor(); // Set the executor, replacing the default one. // In this case the executor is equivalent to the // default one. wRequest.set_executor(executor); // Get the current executor var executor = wRequest.get_executor(); alert("Response availabe: " + executor.get_responseAvailable()) } // This function sets an HTTP header for // the Web request. function WebRequestHeader() { // Instantiate the WebRequest object. var wRequest = new Sys.Net.WebRequest(); // Set the request Url. wRequest.set_url(postPage); // Set the request verb. wRequest.set_httpVerb("POST"); var body = "Message=Hello! Do you hear me?" wRequest.set_body(body); // Set the value of the HTTP header's "Content-Length". wRequest.get_headers()["Content-Length"] = body.length; // Set the web request completed event handler, // for processing return data. wRequest.add_completed(OnWebRequestCompletedHeader); // Clear the results page element. displayElement.innerHTML = ""; // Execute the request. wRequest.invoke(); } // This the handler for the Web request completed event // that is used to display return data. function OnWebRequestCompleted(executor, eventArgs) { if(executor.get_responseAvailable()) { // Clear the previous results. displayElement.innerHTML = ""; // Display Web request status. DisplayWebRequestStatus(executor); // Display Web request headers. DisplayWebRequestHeaders(executor); // Display Web request body. DisplayWebRequestBody(executor); } else { if (executor.get_timedOut()) alert("Timed Out"); else if (executor.get_aborted()) alert("Aborted"); } } // This the handler for the Web request completed event // that is used to display header information. function OnWebRequestCompletedHeader(executor, eventArgs) { if(executor.get_responseAvailable()) { // Clear the previous results. displayElement.innerHTML = ""; // Display Web request headers. DisplayWebRequestHeaders(executor); } else { if (executor.get_timedOut()) alert("Timed Out"); else if (executor.get_aborted()) alert("Aborted"); } } // This function is used to display the Web request status. function DisplayWebRequestStatus(executor) { displayElement.innerHTML += "Status: [" + executor.get_statusCode() + " " + executor.get_statusText() + "]" + "<br/>" } // This function is used to display Web request HTTP headers. function DisplayWebRequestHeaders(executor) { displayElement.innerHTML += "Headers: "; displayElement.innerHTML += executor.getAllResponseHeaders() + "<br/>"; } // This function is used to display the Web request body. function DisplayWebRequestBody(executor) { displayElement.innerHTML += "Body: "; if (document.all) displayElement.innerText += executor.get_responseData(); else // Firefox displayElement.textContent += executor.get_responseData(); } // This function is used to display the Web request message. function DisplayInformation(message) { // Clear the previous results. displayElement.innerHTML = ""; // Display information. displayElement.innerHTML = "<br/>" + message; } if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();