当前位置 : 主页 > 网页制作 > HTTP/TCP >

.NET HTTP处理程序 – 如何发送自定义响应?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我已将自定义(基于套接字)的服务器转换为IIS(.NET 4.0)中的HTTP处理程序. 我已将客户端转换为以正确格式发送HTTP GET. 我不想更改客户端的响应处理代码来解析HTML代码.这是后方的痛苦也是
我已将自定义(基于套接字)的服务器转换为IIS(.NET 4.0)中的HTTP处理程序.

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

我不想更改客户端的响应处理代码来解析HTML代码.这是后方的痛苦也是不必要的.我不需要此服务器与浏览器一起使用或与我的客户端以外的任何东西兼容.

所以,我基本上需要HTTP Handler(服务器)来发送客户端期望的响应 – 没有“HTML / 1.0”,标题和诸如此类的东西.

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

在此先感谢您的帮助.
戴夫

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

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

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

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

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Sat, 03 Sep 2011 03:26:36 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 11
Connection: Close

响应的实际内容很简单

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
Server: ASP.NET Development Server/10.0.0.0
Date: Sat, 03 Sep 2011 03:40:14 GMT
X-AspNet-Version: 4.0.30319
my-skillz: being AWESOME!
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Content-Length: 11
Connection: Close

所以你有它.看一下HttpResponse上的文档,这样你就可以看到所有可用的内容,你应该能够在没有任何额外麻烦的情况下从响应中得到你想要的内容,并且看不到任何HTML.

网友评论