在C# 中如何从一个流中获取到完整的HTTP request

明月照大江 发布于 2013/05/03 06:30
阅读 1K+
收藏 0

因为最近的一个项目要求 开发语言必须是C# ,所以不得不放弃之前一直在弄的java。

在java中,有netty这样好用的第三方组件,并且自带了一份良好的 http 的encode 和 decode,使得我们可以充分的读取和使用http来进行通信。

由于项目的特殊性 ,目前设计的方案为 WebBrowser-->localProxy--->server这样的设计,其中WebBrowser是C# 自带的组件,就是一个浏览器的封装,当浏览器访问某一个地址比如:http://www.oschina.net/的时候,会向localProxy发送一个request的请求,然后localProxy再将这个request封装起来,发送到server中,目前LocallProxy采用C# 来编写,并且是基于Socket的,但是我刚接触C#,和对Http的协议不是很熟悉,因此没有办法完整和安全的去确定一个 request的长度(在HTTP协议中,既可以使用chunked来确定一个request的长度和内容,也可以使用Context-length这个首部来确定后续的data字段的长度),本来自己编写一个基于流的HTTP解码和编码是一个方案,但是由于功力不够,没有办法写出一个完整可行的编码解码方案,因此想在这里问问,是否存在一个这样的东西,能够帮助我安全稳定地从一个Socket流中,解码出一个Request,可以是MSDN自带的,也可以是一个稳定的第三方组件。

加载中
返回顶部
顶部