HttpResponse對象


為了響應客戶端的請求,同樣定義了代表響應的類:HttpResponse類,它也定義在命名空間System.Web下,提供向客戶端響應的方法和屬性。

HttpResponse常用屬性和方法

響應對象用於向瀏覽器發回服務器處理的結果,這個結果是Http協議中的響應消息。這個消息中包含:狀態行,頭部,主體部分。

StatusCode:用於設置狀態碼,例如:200,500等等

StatusDescription:狀態的描述信息。

Status:可以直接設置狀態行的內容,例如:200 OK

對於響應的頭部信息,大多數可以通過HttpResponse的屬性直接設置。對於沒有對應屬性的頭部信息,還可以通過AddHeader方法處理。這個方法接收兩個字符串參數,一個回應頭的名稱,一個回應頭所對應的值。

ContentType:響應內容的類型,設置該屬性為itext\html,在輸出到Http消息中對應的頭部信息為Content-Type:text\html.

AddHeader方法定義如下:

       //
        // Summary:
        //     Adds an HTTP header to the output stream. System.Web.HttpResponse.AddHeader(System.String,System.String)
        //     is provided for compatibility with earlier versions of ASP.
        //
        // Parameters:
        //   name:
        //     The name of the HTTP header to add value to.
        //
        //   value:
        //     The string to add to the header.
        public void AddHeader(string name, string value);

例如,在使用http下載的時候,需要設置Content-Disposition回應頭,但在HttpResponse中並沒有對應的屬性,那么可以通過下面的方式完成:

 Response.AddHeader("Content-Disposition","attachment; filename=download.zip");

與HttpRequest類似,HttpResponse也有一個Cookies屬性,這個屬性是用來向瀏覽器響應Cookie的集合,每個加入到這個集合中的HttpCookie對象,將在回應頭中生成一行如下的回應頭:

如服務端創建HttpCookie對象加入到Cookies集合中,向瀏覽器輸出

            HttpCookie n = new HttpCookie("n", "wolfy");
            HttpCookie p = new HttpCookie("p", "1234");
            Response.Cookies.Add(n);
            Response.Cookies.Add(p);

查看響應頭信息

響應的內容部分是通過流來完成的,HttpResponse對象的OutputStream屬性引用了輸出到Http回應的輸出流。

       //
        // Summary:
        //     Enables binary output to the outgoing HTTP content body.
        //
        // Returns:
        //     An IO System.IO.Stream representing the raw contents of the outgoing HTTP
        //     content body.
        //
        // Exceptions:
        //   System.Web.HttpException:
        //     OutputStream is not available.
        public Stream OutputStream { get; }

多數情況下,在web開發中,服務器的處理結果是一個文本網頁,Output屬性指向了一個經過包裝的輸出流,文本類型的輸出流。這樣我們可以非常簡單的輸出文本內容。該屬性的定義如下:

       //
        // Summary:
        //     Enables output of text to the outgoing HTTP response stream.
        //
        // Returns:
        //     A System.IO.TextWriter object that enables custom output to the client.
        public TextWriter Output { get; set; }

對於文本內容,所使用的編碼由屬性ContentEncoding決定,該屬性的定義如下:

        //
        // Summary:
        //     Gets or sets the HTTP character set of the output stream.
        //
        // Returns:
        //     A System.Text.Encoding object that contains information about the character
        //     set of the current response.
        //
        // Exceptions:
        //   System.ArgumentNullException:
        //     Attempted to set System.Web.HttpResponse.ContentEncoding to null.
        public Encoding ContentEncoding { get; set; }

注意

在Http消息中,頭部必需在主體部分的前面,所以,在已經輸出主體部分之后,是不能再次輸出消息頭的。默認情況下,HttpResponse對輸出的內容進行了緩沖,所以通過HttpResponse輸出的內容並沒有立即輸出到http中,還可以進行修改。這個時候,是可以在使用輸出流之后再次設置回應頭的,但,如果關閉了HttpResponse的緩沖,那么,這樣的操作將會出錯。HttpResponse的BufferOutput屬性是一個bool類型,用於設置是否緩沖輸出的內容。

HttpResponse類還提供一些特殊的方法,以以直接返回某些特定的內容,例如,請求的重定向,根據http協議,服務器可以返回iyige狀態碼為302的回應通知瀏覽器應該向另外一個地址發出請求。回應頭重的Location指出請求的地址.HttpResponse的Redirect方法,可以很方便幫我們實現這個功能,我們只需將重定向的url傳給這個方法,HttpResponse返回一個狀態碼為302的回應,通知瀏覽器重定向新的Url發出請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM