如何在.NET中处理HTTP Connect?

时间:2011-09-15 13:01:44

标签: c# .net http ssl tcp

我想在非常低的级别上处理HTTP - 目前我仍然坚持使用HTTP CONNECT动词。看起来HttpListener无法访问这些请求,因为它们是在HTTP API或HTTP.SYS内部处理的。我能够使用本机TcpListener处理此类请求,但在这种情况下,我将失去所有HTTP功能=我将从头开始实现HTTP。

我还检查了FiddlerCore,但它也在一些Win API层上处理这些请求。有没有纯.NET HTTP堆栈?

编辑:我正在使用HTTP代理进行一些额外的请求分析和统计,因此我不想丢失HTTP解析,同时我想了解SSL连接。

3 个答案:

答案 0 :(得分:1)

使用Tcp *和Socket *,而不是与Http *相关的​​类在.NET中使用真正的低级别。

TCP位于HTTP协议栈的底部。

如果需要,可以使用TCP套接字,只需使用c#中的“winsock2.dll”互操作调用,以及结构定义等所有相关内容,或使用本机C ++

答案 1 :(得分:1)

好吧,如果您正在构建自定义HTTP / HTTPS服务器或代理,而您不介意第三方组件,那么我们的SecureBlackbox包含HTTP / HTTPS服务器组件,您可以使用任何动词执行几乎任何操作。纯.NET,使用任何套接字类。

答案 2 :(得分:0)

确定。同样问题不在于API,而在于开发人员:)

我有一些测试套件来测试我的实现,但测试套件是直接连接(而不是代理) - 这是第一个问题。第二个问题是,如果我想单独测试Connect动词,则此测试套件应使用TcpClient而不是HttpWebRequest,因为HttpWebRequest仅在内部使用HTTPS代理时使用它。