我正在使用我正在构建的Windows Phone 8应用程序遇到一些奇怪的行为,我希望这里有人有一些使用它的经验。
我正在使用普通的HttpWebRequest阅读网站,并希望将cookie作为回复。但是,不知何故,我没有在我的WebResponse中获得Set-cookie
标题。我在WPF下创建了相同的功能,它正常工作 - 在响应中返回Set-cookie
标头。
我也尝试查看响应的CookieContainer
,但它也是空的。
以下是我正在使用的代码。 注意:同一条代码(没有异步内容)在WPF中正常工作并返回Set-Cookie
标题。如有必要,我也可以发布它:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.mysite.com/login");
request.Method = HttpMethod.Post;
request.AllowAutoRedirect = false;//normally there is a redirect in place
postData = "username=1234&password=2345";
var data = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = await Task.Factory.FromAsync<Stream>(request.BeginGetRequestStream, request.EndGetRequestStream, null))
{
await stream.WriteAsync(data, 0, data.Length);
stream.Close();
}
using (var response = await Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null))
{
return response.Headers["set-cookie"];
}
因此,我得到了一些响应标头(例如内容类型和服务器特定的标头)但不是Set-Cookie
标题。
答案 0 :(得分:2)
我已经完成了一些测试,只在Windows Phone模拟器上省略了set-cookie
标题。使用实际设备进行调试时,会按预期接收标头。
我仍然很奇怪为什么模拟器会以这种方式运行。我在模拟器中看到了很多关于http-only cookie问题的帖子,但没有具体原因。
<强>更新强>
在8.0.10322模拟器上进行的测试工作得很好 - 正确处理了cookie。看起来默认的手机模拟器可以使用cookie进行搜索。