c# - 代理 HTTP 请求

标签 c# http httpwebrequest http-proxy

是否可以通过将主机指定为代理来通过代理路由 GET 请求?或者您是否必须设置数据包的目的地?

我正在尝试生成 HTTPRequestMessage 并通过代理路由它。但是,我没有精细级别的控制来设置发送请求的目的地。

最佳答案

我能够为 HttpClient、HttpWebRequest 和 HttpRequestMessage 添加代理。它们不必一起使用,但我只是找到了两种使用代理发出 HTTP 请求的方法。要在 windows store/metro 应用程序中执行此操作,您必须实现 IWebProxy。

看看这个实现 IWebProxy:http://social.msdn.microsoft.com/Forums/windowsapps/en-US/6e20c2c0-105c-4d66-8535-3ddb9a048b69/bug-missing-type-webproxy-cant-set-proxy-then-where-is-the-appconfig

然后您需要做的就是为 HttpClient 或 HttpWebRequest 设置代理:

HTTP 客户端:

HttpClientHandler aHandler = new HttpClientHandler();
IWebProxy proxy = new MyProxy(new Uri("http://xx.xx.xx.xxx:xxxx"));
proxy.Credentials = new NetworkCredential("xxxx", "xxxx");
aHandler.Proxy = proxy;
HttpClient client = new HttpClient(aHandler);

HttpWeb请求:

HttpWebRequest webrequest = (HttpWebRequest)WebRequest.CreateHttp(uri);
IWebProxy proxy = new MyProxy(new Uri("http://xx.xx.xx.xxx:xxxx"));
proxy.Credentials = new NetworkCredential("xxxx", "xxxx");
webrequest.Proxy = proxy;

HttpRequestMessage

一旦构造了 HttpRequestMessage,就可以使用上面的方法 (HttpClient) 发送此请求消息,它将通过代理路由,无需任何额外工作。

关于c# - 代理 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367219/

相关文章:

java - 使用 HttpUrlConnection 时如何从 CookieManager 设置 cookie?

c# - 当 header 包含非 ascii 内容时,System.Net.Browser.ClientHttpWebRequest.EndGetResponse 抛出 System.ArgumentException

Java:异步任务

c# - 无法使用 visual studio 2013 ("Cannot evaluate expression"错误调试托管代码 - 我正在使用调试版本)(注意 VS 2012 有效)

c# - 反序列化异常处理

http - 处理程序是否假设在 http 响应 header 中填充内容类型?

node.js - 在 Node 中创建 REST API 时,如何将来自对外部网站的请求的 http 响应流式传输到原始 api 调用?

asp.net - 从 ASP.Net PageMethod 调用访问响应 header

c# - 重定向 Debug.Assert() 输出

c# - MongoDB Linq 驱动程序转换异常