コード例 #1
0
        public void InitSettingData()
        {
            var settingvm = ViewModelInstance.Instance.SettingPageViewModelInstance;

            settingvm.InitSettingData();

            HttpBaseProtocolFilter filter           = new HttpBaseProtocolFilter();
            HttpCookieCollection   cookieCollection = filter.CookieManager.GetCookies(new Uri(ViewModelInstance.Instance.UrlService.GetHomePage()));
            var cookieItem = cookieCollection.FirstOrDefault(p => p.Name.Equals("sodu_user"));

            if (cookieItem == null)
            {
                ViewModelInstance.Instance.IsLogin = false;
                return;
            }

            if (settingvm.IfAutoLogin)
            {
                cookieItem.Expires = new DateTimeOffset(DateTime.Now.AddDays(365));
                filter.CookieManager.SetCookie(cookieItem, false);
                ViewModelInstance.Instance.IsLogin = true;
            }
            else
            {
                cookieItem.Expires = null;
                filter.CookieManager.SetCookie(cookieItem);
            }
        }
コード例 #2
0
        public void InitData(object obj = null)
        {
            IsLoading = true;

            Task.Run(() =>
            {
                try
                {
                    HttpBaseProtocolFilter filter         = new HttpBaseProtocolFilter();
                    HttpCookieCollection cookieCollection = filter.CookieManager.GetCookies(new Uri(ViewModelInstance.Instance.UrlService.GetHomePage()));
                    var cookieItem = cookieCollection.FirstOrDefault(p => p.Name.Equals("sodu_user"));

                    if (cookieItem == null)
                    {
                        ViewModelInstance.Instance.IsLogin = false;
                    }
                    else
                    {
                        cookieItem.Expires = null;
                        filter.CookieManager.SetCookie(cookieItem);
                    }
                    DispatcherHelper.CheckBeginInvokeOnUI(async() =>
                    {
                        ViewModelInstance.Instance.MainPageViewModelInstance.ChangeLoginState(false);
                        ViewModelInstance.Instance.MyBookShelfViewModelInstance.ShelfBookList.Clear();
                        ToastHeplper.ShowMessage("注销成功");
                        await Task.Delay(500);
                        NavigationService.ContentFrame.Navigate(typeof(HomePage));
                        NavigationService.ClearStack();
                    });
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                }
                finally
                {
                    DispatcherHelper.CheckBeginInvokeOnUI(() =>
                    {
                        IsLoading = false;
                    });
                }
            });
        }
コード例 #3
0
            public IAsyncOperationWithProgress <HttpResponseMessage, HttpProgress> SendRequestAsync(HttpRequestMessage request)
            {
                return(AsyncInfo.Run <HttpResponseMessage, HttpProgress>(async(cancellationToken, progress) => {
                    Uri requestUri = request.RequestUri;

                    HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
                    HttpCookieCollection cookieCollection = filter.CookieManager.GetCookies(requestUri);

                    var csrf = cookieCollection.FirstOrDefault(cookie => cookie.Name == "X-CSRF-Token");
                    if (csrf != null)
                    {
                        request.Headers.Add(csrf.Name, csrf.Value);
                        Debug.Write("csrf token added");
                    }


                    //Debug.WriteLine(text);
                    //request.Headers.Add("Custom-Header", "CustomRequestValue");
                    HttpResponseMessage response = await innerFilter.SendRequestAsync(request).AsTask(cancellationToken, progress);
                    cancellationToken.ThrowIfCancellationRequested();
                    //response.Headers.Add("Custom-Header", "CustomResponseValue");
                    return response;
                }));
            }