WP8.1 RT 和 Windows 8.1 RT 应用程序的 PCL Web Lib 问题

Posted

技术标签:

【中文标题】WP8.1 RT 和 Windows 8.1 RT 应用程序的 PCL Web Lib 问题【英文标题】:PCL Web Lib issue for WP8.1 RT and Windows 8.1 RT app 【发布时间】:2015-03-12 02:46:16 【问题描述】:

我正在编写一个调用 Windows Phone 8.1 RT 和 Windows 8.1 应用程序的 PCL Web Lib

虽然 HttpWebRequest 类不能修改 HOST、referer 等头文件,但运行的是 Windows RT 8.1 应用程序(WP8.1 RT 运行正常,这是微软的一个错误)

所以我想使用 HttpClient 类。 UnResolve 的一个问题是如何修改请求 HOST? 我可以设置不同的 HOST,没有任何例外。但实际上,请求 HOST 并没有被应用。以下是我的代码:

 var client = new HttpClient();
 var request = new HttpRequestMessage()
 
     RequestUri = new Uri("http://www.bing.com"),
     Method = HttpMethod.Get,
 ;

client.DefaultRequestHeaders.Host = new HostName("12.34.56.78");
//client.DefaultRequestHeaders.Add("Host", "12.34.56.78");

var respose = await client.SendRequestAsync(request);
var content = await respose.Content.ReadAsStringAsync();

【问题讨论】:

【参考方案1】:

根据Wikipedia,主机HTTP头用于标识服务器上的虚拟主机。我认为你应该在RequestUri上设置IP地址并将主机设置为所需的域名,例如:

var client = new HttpClient();
var request = new HttpRequestMessage()

     RequestUri = new Uri("http://12.34.56.78/path"),
     Method = HttpMethod.Get,
;

client.DefaultRequestHeaders.Host = new HostName("www.bing.com");

var respose = await client.SendRequestAsync(request);
var content = await respose.Content.ReadAsStringAsync();

【讨论】:

以上是关于WP8.1 RT 和 Windows 8.1 RT 应用程序的 PCL Web Lib 问题的主要内容,如果未能解决你的问题,请参考以下文章

Windows Phone 8.1 RT 中的 ViewportControl 是啥?

如何使用 QML (Qt5.3) for Windows 8.1 RT 创建多语言应用程序?

如何在 Windows Phone 应用程序 8.1 rt 中安排本地通知?

如何在 Windows Phone 8.1 XAML (RT) 应用程序中显示 admob 广告?

支持 Windows Phone 8 和 8.1 的通知

WP 8.1 RT 上的 MapItemsControl 点击事件