Esempio n. 1
0
        internal async Task <FileSystemResult <T> > CreateMetadataStream <T>(string url, byte[] postdata = null, string contenttype = "application/x-www-form-urlencoded", HttpMethod method = null) where T : class
        {
            bool retry = false;

            do
            {
                if (method == null)
                {
                    method = HttpMethod.Get;
                }
                WebParameters pars = new WebParameters(new Uri(url));
                pars.Method = method;
                if (postdata != null)
                {
                    pars.PostData     = postdata;
                    pars.PostEncoding = contenttype;
                    if (method == null || method == HttpMethod.Get)
                    {
                        pars.Method = HttpMethod.Post;
                    }
                }
                if (UserAgent != null)
                {
                    pars.UserAgent = UserAgent;
                }

                if (Token != null)
                {
                    NameValueCollection nm = new NameValueCollection();
                    nm.Add("Authorization", "Bearer " + Token.AccessToken);
                    pars.Headers = nm;
                }
                using (WebStream w = await WebStreamFactory.Instance.CreateStreamAsync(pars))
                {
                    if ((w.StatusCode == HttpStatusCode.OK) || (w.StatusCode == HttpStatusCode.Created) || (w.StatusCode == HttpStatusCode.Accepted) || (w.StatusCode == HttpStatusCode.NoContent)) //TODO move this to a parameter
                    {
                        StreamReader rd = new StreamReader(w);
                        string       d  = await rd.ReadToEndAsync();

                        if (typeof(T).Name.Equals("string", StringComparison.InvariantCultureIgnoreCase))
                        {
                            return(new FileSystemResult <T>((T)(object)d));
                        }
                        return(new FileSystemResult <T>(JsonConvert.DeserializeObject <T>(d)));
                    }
                    if (w.StatusCode != HttpStatusCode.Unauthorized || retry)
                    {
                        return(new FileSystemResult <T>("'url' responds with Http code: " + w.StatusCode));
                    }
                    retry = true;
                    await MayRefreshToken(true);
                }
            } while (true);
        }
Esempio n. 2
0
 /// <summary>
 /// 当页面事件发生时
 /// </summary>
 /// <param name="sourceControl"></param>
 /// <param name="eventArgument"></param>
 protected virtual void BeforeEventRaise(IPostBackEventHandler sourceControl, string eventArgument)
 {
     if (!(sourceControl is PageNavigation) && _controls_auto_process.ContainsKey(((Control)sourceControl).ID))
     {
         //执行预调用logic
         WebParameters.SetValue("__CurrentEventArgs", ComFunc.nvl(eventArgument));
         WebParameters.RequestResourceName = this.PageName;
         WebParameters.Action = PostBackActionKey.POST_BACK_EVENT + "." + ((Control)sourceControl).ID;
         CallLogic();
         //回写页面数据
         SetPageDataBind();
         SetPageModelValue();
     }
 }