我有这个代码在Windows Phone 8.1上运行得非常好。
不幸的是它在Windows 8.1上不起作用。我从这个请求得到的响应给了我一个会话过期的页面,就像没有cookie一样。代码看起来很好,但看起来cookie没有设置或我错过了其他东西......
是否需要添加某些内容才能使其适用于Windows应用商店应用?
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
using (var client = new HttpClient(handler))
{
client.DefaultRequestHeaders.Add("Cookie", value.ToString());
htmlPage = await client.GetStringAsync("https://www.someurl.com" + querystring);
}
答案 0 :(得分:1)
您的代码可以正常传入标题,但不能传递Cookie。请尝试使用此代码:
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer.Add(new Uri("http://www.microsoft.com"), new Cookie("MyCookieName", "MyCookieValue"));
using (var client = new HttpClient(handler))
{
htmlPage = await client.GetStringAsync("https://www.microsoft.com");
}
答案 1 :(得分:0)
System.Net.Http似乎在W8.1上的工作方式与在WP8.1上的工作方式不同。我永远无法弄清楚差异。
尽管如此,我使用Windows.Web.Http重写了我的代码,这是8.1上的新功能,建议使用。这里是一个如何使用新的httpclient附加cookie的示例:
var bpf = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
var cm = bpf.CookieManager;
var cookie = new HttpCookie("name", ".example.com", "/") { Value = "value" };
cm.SetCookie(cookie);
var http = new HttpClient(bpf);
await http.PostAsync(new Uri("http://example.com/"), new HttpStringContent("content"));
以及这里的样本:
http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664