使用HttpRequest

时间:2018-03-01 21:34:13

标签: android xamarin.forms

我有一个Xamarin Forms应用程序,我在Webview和HttpClient之间通过在登录后抓取它们来共享cookie。在iOS上这很好用,在Android上我有以下问题:

如果cookie是作为HTTPClinet Api调用的结果创建的,则使用WebView或HttpClient删除(已过期),cookie不再位于cookie列表中。使用HttpClient时,HttpClientHandler.CookieContainer的计数为0.

如果使用WebView创建cookie并使用其他WebView删除cookie,则cookie不再位于cookie列表中。

如果使用WebView创建cookie并使用HTTPClient Api调用删除cookie,则不会发生过期且cookie仍在HttpClinet的HttpClinetHandler的CookieContainer中,我可以看到计数不是0.

如果我查看HttpResponse,我会在标题中看到过期的cookie:

"MyTestCookie=; expires=Wed, 28-Feb-2018 21:25:08 GMT; path=/; HttpOnly"

如果我进一步查看CookieContainer,m_domainTable有2个条目,一个用于我的ip,没有cookie,一个用于我的ip,前面带有"。"包含应该过期/删除的cookie但它没有过期且具有原始值。

为Api调用和MVC页面创建cookie的服务器代码是:

    var cookie = new HttpCookie("MyTestCookie");
    cookie.HttpOnly = true;
    cookie.Values["token"] = "309d530f956ac04";
    cookie.Expires = DateTime.Now.AddDays(1);
    Response.Cookies.Add(cookie);

和删除/过期的代码是:

    if (Request.Cookies["MyTestCookie"] != null)
    {
        var cookie = new HttpCookie("MyTestCookie");
        cookie.HttpOnly = true;
        cookie.Expires = DateTime.Now.AddDays(-1);
        Response.Cookies.Add(cookie);
    }

这是一个错误,还是我错过了什么?

0 个答案:

没有答案