hal*_*lei 2 c# cookies dotnet-httpclient
我有一个需要与服务器通话的Windows Phone 8应用程序.HttpClient当我在服务器上调用登录服务(位于子目录"/ authentication"下)时,服务器将cookie设置为我的客户端处理程序.然后我把Cookie它拿出来存放在IsolatedStorageSettings.当我关闭并重新打开我的应用程序,从而重新实例化我的HttpClient,我想获得Cookie的IsolatedStorageSettings,它手动设置为我的客户端处理程序.但是,我得到一条CookieException消息:"Cookie的'Domain'='mobile.some-domain.com'部分无效."
我为此写的代码如下:
public static void saveCookies()
{
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
var cookies = handler.CookieContainer.GetCookies(new Uri(ROOT + "/authentication"));
settings["sessionCookie"] = cookies["JSESSIONID"];
settings.Save();
}
public static bool checkCookies()
{
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (settings.Contains("sessionCookie"))
{
Cookie c = settings["sessionCookie"] as Cookie;
Uri uri = new Uri(ROOT + "/authentication");
handler.CookieContainer.Add(uri, c);
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
ROOT是" https://mobile.some-domain.com/ERSMobileApps/services ",处理程序的类型是HttpClientHandler.
我是第一次处理cookie,所以对此有任何帮助/评论将不胜感激.提前致谢.
该文件说:"如果你只是一个特定的主机添加一个Cookie例如,不要设置Cookie实例的域属性这是自动设置的,基于URI." 所以,我改变checkCookies为:
public static bool checkCookies()
{
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (settings.Contains("sessionCookie"))
{
Cookie c = settings["sessionCookie"] as Cookie;
Cookie newCookie = new Cookie(c.Name, c.Value, c.Path);
Uri uri = new Uri(ROOT + "/authentication");
handler.CookieContainer.Add(uri, newCookie);
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我没有任何问题.