c# - 将 WebProxy 与 HttpClient.SendAsync() 和 HttpRequestMessage 结合使用

标签 c# .net windows-store-apps dotnet-httpclient

我可以通过实现 IWebProxy 类并执行以下操作来使用代理: HttpClientHandler aHandler = new HttpClientHandler();

aHandler.UseCookies = true;
aHandler.AllowAutoRedirect = true;
IWebProxy proxy = new AWProxy(new Uri("http://xx.xx.xxx.xxx:xxxx"));
proxy.Credentials = new NetworkCredential("xxxx", "xxxx");
aHandler.Proxy = proxy;

HttpClient client = new HttpClient(aHandler);

通过调用 client.GetAsync("http://google.com ") 我能够返回成功的响应消息。但是我希望能够使用 HttpRequestMessage 来控制 header 和发布/放置内容。

HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, uri); 

//add other headers
requestMessage.Headers.UserAgent.ParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)");

HttpResponseMessage response = await client.SendAsync(requestMessage);

但是如果我使用 HttpRequestMessage 我会得到这个异常:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: Unable to connect to the remote server. ---> System.NullReferenceException: Object reference not set to an instance of an object.

感谢任何帮助,谢谢!

最佳答案

将它们直接添加到您的 HttpClient。

client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0;     Windows NT 6.2; WOW64; Trident/6.0)");

关于c# - 将 WebProxy 与 HttpClient.SendAsync() 和 HttpRequestMessage 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353224/

相关文章:

c# - 在纯 XAML 中,是否可以动态选择字符串格式?

c# - 通过 VS 2015 RC 进行非 Azure 部署

没有 dll 的桌面 C# 数据库

.net - 如何跨 AppDomains 订阅事件(object.Event += handler;)

javascript - 按钮元素不显示文本值

c# - 使用 JSON.NET 反序列化格式错误的 JSON

c# - 有没有办法将 ObjectSet<table1> 转换为 ObjectSet<EntityObject>?

c# - 传递所有鼠标事件,但不传递手写笔事件

c# - Windows 应用商店应用程序中的大字节数组

c# - 将现有数据库(存储文件)复制到存储文件夹