2011-09-03 139 views
3

我已將自定義(基於套接字)服務器轉換爲IIS(.NET 4.0)中的HTTP處理程序。.NET HTTP處理程序 - 如何發送自定義響應?

我已經轉換我的客戶端以正確的格式發送HTTP GET。

我不想更改客戶端的響應處理代碼來解析出HTML代碼。這是後方的痛苦,也是不必要的。我不需要這臺服務器與瀏覽器一起工作,或者與我的客戶端以外的任何設備兼容。

所以,我基本上需要HTTP處理程序(服務器)發送客戶端期望的響應 - 沒有「HTML/1.0」,頭和什麼。

此刻我正在使用HttpContext.Response.Write()方法。我認爲有一種方法可以將原始數據寫入響應,或者是刪除我想發送的數據周圍的所有標題和HTML標記。

在此先感謝您的幫助。 Dave

回答

7

如果您正在瀏覽器器中進行驗證,那麼您可能會看到的是瀏覽器嘗試修復程序爲您的HTML。

舉例來說,如果我有這在我的處理程序:

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.Write("Hello World"); 
} 

那麼響應頭看起來就像這樣:

HTTP/1.1 200 OK
服務器:ASP.NET開發服務器/10.0.0.0
Date:Sat,03 Sep 2011 03:26:36 GMT
X-AspNet-Version:4.0.30319
Cache-Control:private
內容類型:text/html;字符集= UTF-8
的Content-Length:11
連接:關閉

響應的實際內容僅

的Hello World

你會注意到默認的內容類型是text/html,但是,您基本上可以完全控制響應。您可以清除標題,添加新的,並設置相應的內容類型:

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ClearHeaders(); 
    context.Response.AddHeader("my-skillz", "being AWESOME!"); 
    context.Response.ContentType = "text/plain"; 
    context.Response.Write("Hello World"); 
} 

這將產生以下響應頭:

HTTP/1.1 200 OK
服務器:ASP.NET開發服務器/ 10.0.0.0
日期:星期六,2011年9月3日三時40分14秒GMT
X-ASPNET-版本:4.0.30319
我-的skillz:是真棒!
Cache-Control:private
Content-Type:text/plain;字符集= UTF-8
的Content-Length:11
連接:關閉

所以你有它。查看HttpResponse上的文檔,以便您可以看到所有可用的文檔,並且您應該能夠從響應中準確得到您想要的內容,而不會產生任何額外的頭痛,並且在任何地方都無法看到HTML。

+0

你說得對「 ...」。瀏覽器正在添加。雖然標題仍然存在。我猜不用擔心。這對客戶來說不是一個可怕的修改。我需要做的就是使用String.split(「\ r \ n \ r \ n」)並使用第二個字符串。 – Jin