首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TcpListener代理HttpWeb

TcpListener代理HttpWeb
EN

Stack Overflow用户
提问于 2015-07-21 19:48:31
回答 1查看 248关注 0票数 0

我目前正在进行一个需要通过本地代理传输一些HTTP流量的项目,我的应用程序已经使用TcpListener设置了该项目。这确实是一个非常基本的设置。

我可以得到标准的标头,Firefox的一个例子是:

代码语言:javascript
复制
GET http://example.com/ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

现在,我希望看到example.com的让步,即使它是通过我的代理进行的。我看到的解决方案是获取这些标头,然后通过HttpWebRequest传递它们。但是,我似乎不明白如何传递整个标题。

如果以前有人处理过这样的情况,或者知道如何将整个头传递给HttpWebRequest,那将是非常感谢的。

顺便说一句,我是用VB.NET写这篇文章的,但是用.NET语言中的任何一种都可以。

编辑:,我的措辞可能有点混乱。

我得到的是网站传递给代理的请求(标题)。然后,我从TcpListener中读取流以获取该头文件。现在,该流包含一个标头,如缩进代码框中所示。现在,为了将一个响应写回包含通常不会显示管道的内容的流,我想我必须获取我收集的标题,使用HttpWebRequest获取内容,然后将其写入流,向用户提供预期的网页。

因此,我想知道的是:我如何将这个头提供给一个HttpWebRequest,并获取内容,然后我可以将这些内容写入NetworkStream,然后在浏览器中显示为正常的内容。我认为所有的代理都是这样工作的,但也许不是这样的。

EN

回答 1

Stack Overflow用户

发布于 2015-07-21 20:35:16

Http标头由冒号分隔,由crlf分隔。标头和主体用空行分隔。

因此,继续从TcpClient/Socket读取,直到收到空行为止。然后解析每个标题,查找内容长度(查看是否也应该读取正文)。最后构建一个HttpWebRequest并发送所有内容。

收到回复后,您需要从HttpWebResponse读取所有内容,构建有效的HttpWebResponse消息,并最终将所有内容发回。

您还可以查看我的Apache许可库,它包含一个HttpListener和一个http编码器/解码器。http://github.com/jgauffin/griffin.framework

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31548310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档