【问题标题】:.NET HTTP Handler -- How to Send Custom Response?.NET HTTP 处理程序——如何发送自定义响应?
【发布时间】:2011-09-03 02:49:07
【问题描述】:

我已将我的自定义(基于套接字的)服务器转换为 IIS (.NET 4.0) 中的 HTTP 处理程序。

我已将我的客户端转换为以正确格式发送 HTTP GET。

我不想更改客户端的响应处理代码来解析 HTML 代码。那是后部的痛苦,也是不必要的。我不需要此服务器与浏览器一起工作或与除我的客户端之外的任何东西兼容。

所以,我基本上需要 HTTP 处理程序(服务器)来发送客户端期望的响应——没有“HTML/1.0”、标头等。

我目前正在使用 HttpContext.Response.Write() 方法。我认为有一种方法可以将原始数据写入响应,或者有一种方法可以删除我要发送的数据周围的所有标题和 HTML 标记。

提前感谢您的帮助。 戴夫

【问题讨论】:

    标签: .net http handler


    【解决方案1】:

    如果您在浏览器中查看此内容以进行验证,那么您可能会看到浏览器尝试为您修复您的 HTML。

    例如,如果我的处理程序中有这个:

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

    然后响应标头将如下所示:

    HTTP/1.1 200 正常
    服务器:ASP.NET 开发服务器/10.0.0.0
    日期:2011 年 9 月 3 日星期六 03:26:36 GMT
    X-AspNet-版本:4.0.30319
    缓存控制:私有
    内容类型:text/html;字符集=utf-8
    内容长度:11
    连接:关闭

    响应的实际内容很简单

    你好世界

    您会注意到默认内容类型是 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 正常
    服务器:ASP.NET 开发服务器/10.0.0.0
    日期:2011 年 9 月 3 日星期六 03:40:14 GMT
    X-AspNet-版本:4.0.30319
    我的技能:太棒了!
    缓存控制:私有
    内容类型:text/plain;字符集=utf-8
    内容长度:11
    连接:关闭

    所以你有它。查看HttpResponse 上的文档,这样您就可以看到所有可用的信息,并且您应该能够从回复中准确获得您想要的内容,而不会有任何额外的头痛,而且没有HTML 随处可见。

    【讨论】:

    • 您对“...”的看法是正确的。浏览器正在添加它。但标题仍然存在。我猜不用担心。这对客户来说并不是一个可怕的修改。我需要做的就是使用 String.split("\r\n\r\n") 并使用第二个字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2011-09-09
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多