在开发一些使用Web服务的应用时,难免会遇到会员登录的需要,或者必须登录后才能获取的信息,这时就需要我们在发送http请求时附上用户的cookie信息。其实在Windows Phone编程中,获取和使用cookie非常简单,所谓cookie就是一个字符串而已。
从WebBrowser中获取cookie
首先记得在WebBrowser控件中设置IsScriptEnabled属性为true,接着Navigate到登陆页面,然后在Navigated事件中编写代码获取cookie:
object obj = webBrowser.InvokeScript("eval", "document.cookie");
if (obj is string)
{
string cookie = obj as string;
}
if (obj is string)
{
string cookie = obj as string;
}
从WebView中获取cookie
和WebBrowser很相似:
string obj = wbLogin.InvokeScriptAsync("eval", new List<string>() { "document.cookie" }).GetResults();
if (!string.IsNullOrEmpty(obj))
{
string cookie = obj;
}
if (!string.IsNullOrEmpty(obj))
{
string cookie = obj;
}
从HttpWebRequest中获取cookie
只要在返回的HttpWebResponse中获取Headers[“Set-Cookie”]的值就可以了。
从System.Net.Http.HttpClient中获取cookie
var result = await client.GetAsync(url);
IEnumerable<string> setCookie = result.Headers.GetValues("Set-Cookie");
string cookie = setCookie.ToList()[0];
IEnumerable<string> setCookie = result.Headers.GetValues("Set-Cookie");
string cookie = setCookie.ToList()[0];
在HttpWebRequest中使用cookie
if (cookie!= string.Empty)
request.Headers["Cookie"] = cookie;
request.Headers["Cookie"] = cookie;
切记务必要判断cookie字符串是否为空,否则在设置的时候会报异常。
在System.Net.Http.HttpClient中使用cookie
if (cookie!= string.Empty)
httpClient.DefaultRequestHeaders.Add("Cookie", cookie);
httpClient.DefaultRequestHeaders.Add("Cookie", cookie);
» 转载请注明来源及链接:未来代码研究所