0

我的 UIWebview 根本没有保存 cookie。它卡在无 cookie 模式,因此网页将 cookie 信息放在 url 中。

这就是我正在做的事情。我的 UIWebview 有一个单例,底部有 4 个 UITabBar 按钮。每个标签栏按钮将用户带到网站上的不同页面。现在,当用户通过 webview 本身浏览站点时,一切都很好,会话仍然存在。但是,当用户单击选项卡按钮时,会话会被重置。

我什至将 NSHttpCookieStorage 设置为始终接受 cookie。还是不行。

这是我的 UIWebview 和 NSMutableUrlRequest 的单例代码

    public static UIWebView instance;
    public static NSMutableUrlRequest urlRequest;
    public static NSUrlConnection connection;
    public static NSHttpCookieStorage cookie;
    static bool TokenSent = false;
    public UIWebViewSingleton () {}

    public static UIWebView Instance
    {
        get
        {
            if (instance == null)
            {   
                Debugger.Debug ("new uiwebview created");
                cookie = NSHttpCookieStorage.SharedStorage;
                cookie.AcceptPolicy = NSHttpCookieAcceptPolicy.Always;
                connection = new NSUrlConnection(); 
                instance = new UIWebView(new RectangleF(0f, 0f, 320f, 416f));
                instance.ScalesPageToFit = true;
                instance.LoadStarted += delegate {
                    UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
                };
                instance.LoadFinished += delegate {
                    UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                    AcquireUserId();
                };
                instance.MultipleTouchEnabled = false;
            }
            return instance;
        }
    }

    public static NSMutableUrlRequest UrlRequest
    {
        get
        {
            if (urlRequest == null)
            {
                urlRequest = new NSMutableUrlRequest();
            }
            return urlRequest;
        }
    }

这就是我根据按下的按钮切换到页面的方式。后退按钮工作正常。

        case BTN_BACK:
            btn_ret.TouchUpInside += delegate(object sender, EventArgs e) {
                UIWebViewSingleton.Instance.GoBack();       
            };
            break;

        case BTN_GUIDE:
            btn_ret.TouchUpInside += delegate(object sender, EventArgs e) {
                UIWebViewSingleton.UrlRequest.Url = new NSUrl(StaticFileNames.GuideUrl);
                UIWebViewSingleton.Instance.LoadRequest (UIWebViewSingleton.UrlRequest);        
            };
            break;

        case BTN_HOME:
            btn_ret.TouchUpInside += delegate(object sender, EventArgs e) {
                UIWebViewSingleton.UrlRequest.Url = new NSUrl(StaticFileNames.BaseUrl);
                UIWebViewSingleton.Instance.LoadRequest (UIWebViewSingleton.UrlRequest);        
            };
            break;

有没有人知道为什么我的 UIWebView 不接受 cookie?我仍然对 NSHttpCookieStorage 以及我是否正确使用它感到困惑。

非常感谢。

4

1 回答 1

0

我采用了足够的解决方法。

由于 cookie 在 url 中,我只是将其解析出来并以编程方式将其放入 tabbar 按钮指向的 url 中。问题解决了。

于 2012-05-02T18:39:48.587 回答