在开发一些使用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;
}
从WebView中获取cookie

和WebBrowser很相似:

string obj = wbLogin.InvokeScriptAsync("eval", new List<string>() { "document.cookie" }).GetResults();
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];
在HttpWebRequest中使用cookie
if (cookie!= string.Empty)
    request.Headers["Cookie"] = cookie;

切记务必要判断cookie字符串是否为空,否则在设置的时候会报异常。

在System.Net.Http.HttpClient中使用cookie
if (cookie!= string.Empty)
    httpClient.DefaultRequestHeaders.Add("Cookie", cookie);
» 转载请注明来源及链接:未来代码研究所

Related Posts:

Leave a Reply

World Line
Time Machine
Friendly Links
Online Tools