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

发布于 2024-12-02 12:31:34 字数 366 浏览 0 评论 0原文

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

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

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

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

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

预先感谢您的任何帮助。 戴夫

I have converted my custom (socket-based) server over to an HTTP Handler in IIS (.NET 4.0).

I have converted my client to send an HTTP GET in the proper format.

I do not want to change my client's response-handling code to parse out the HTML code. That is a pain in the rear that is also unnecessary. I do not need this server to work with a browser or be compatible with anything except my client.

So, I basically need the HTTP Handler (server) to send the response that the client expects -- without the "HTML/1.0", headers and whatnot.

I am using the HttpContext.Response.Write() method at the moment. I figure there is either a way to write raw data to the response, or a way to delete all the headers and HTML tags around the data I want to send.

Thanks in advance for any help.
Dave

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七度光 2024-12-09 12:31:34

如果您在浏览器中查看此内容进行验证,那么您可能会看到浏览器尝试为您修复 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
我的技能:太棒了!
缓存控制:私有
内容类型:文本/纯文本;字符集=utf-8
内容长度:11
连接:关闭

这样就完成了。查看 HttpResponse 上的文档,以便您可以了解所有可用的内容,并且您应该能够从响应中准确地获取您想要的内容,而无需任何额外的麻烦,并且看不到任何 HTML。

If you are looking at this in a browser to verify, then what you may be seeing is the browsers attempt to fix your HTML for you.

For instance if I have this in my Handler:

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

Then the Response Headers will look like this:

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

The actual content of the response is simply

Hello World

You'll notice the default content type is text/html, however, you basically have full control over the response. You can clear the headers, add new ones, and set the content type accordingly:

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");
}

Which will yield the following Response Headers:

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

So there you have it. Take a look at the docs on HttpResponse so you can see all that is available to you, and you should be able to get exactly what you want out of the responses without any extra headache, and no HTML anywhere in sight.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文