2011-09-03 122 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

相关问题