【发布时间】:2014-03-20 06:15:22
【问题描述】:
我正在构建一个 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 一个。
【问题讨论】:
-
我在 Windows Phone 上看到了 cookie 的非常可疑的行为,所以我并不感到惊讶。我认为第一步是使用 Fiddler 捕获响应并确保服务器返回
set-cookie标头。然后,通过启用 Visual Studio 来中断所有异常尝试再次运行您的代码(首先,禁用Just my codemsdn.microsoft.com/en-us/library/dn457346.aspx 然后按 control + alt + E 并选中“公共语言运行时异常”前面的框 -
我也遇到了同样的问题,改用jquery。
-
感谢@KooKiz 和@Praveen 的建议!我会试一试并报告
标签: c# .net windows-phone-8 httpwebrequest setcookie