具有HTTP请求的代理

本文关键字:代理 请求 HTTP 具有 | 更新日期: 2023-09-27 18:20:13

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

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

具有HTTP请求的代理

我能够向HttpClient、HttpWebRequest和HttpRequestMessage添加代理。它们不必一起使用,但我刚刚找到了两种使用代理进行HTTP请求的方法。要在windowsstore/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设置代理:

HttpClient:

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

HttpWebRequest:

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)来发送此请求消息,并且它将通过代理进行路由,而无需任何额外的工作。