예제 #1
0
        protected async Task <string> HttpRequestWithToken(string url, Windows.Web.Http.HttpMethod method, string body = "")
        {
            var filter = new HttpBaseProtocolFilter();

            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired);
            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName);

            using (var httpClient = new Windows.Web.Http.HttpClient(filter))
            {
                Windows.Web.Http.HttpResponseMessage response;
                try
                {
                    var request = new Windows.Web.Http.HttpRequestMessage(method, new Uri(url));
                    if (Token != string.Empty)
                    {
                        request.Headers.Authorization = new HttpCredentialsHeaderValue("Bearer", Token);
                    }
                    if (body != string.Empty)
                    {
                        request.Content = new Windows.Web.Http.HttpStringContent(body);
                        request.Content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
                    }
                    response = await httpClient.SendRequestAsync(request);

                    var content = await response.Content.ReadAsStringAsync();

                    return(content);
                }
                catch (Exception ex)
                {
                    return(ex.ToString());
                }
            }
        }
예제 #2
0
        public async Task <RestResponse> AuthenticationRequest(HttpMethod method)
        {
            if (method == HttpMethod.Get)
            {
                _state = RandomString.Create(16);
            }

            // First send authentication request
            var request = new RestRequest(method)
            {
                Resource = AuthResource
            };

            AddParameter addParameter = request.AddParameter;

            if (method == HttpMethod.Get)
            {
                addParameter = request.AddQueryParameter;
            }

            addParameter("state", _state);
            addParameter("response_type", "token");
            addParameter("scope", Scopes);
            addParameter("client_id", ClientId);
            addParameter("redirect_uri", RedirectUri);
            if (method == HttpMethod.Post)
            {
                addParameter("uh", _uh);
                addParameter("authorize", "Allow");
            }
            var response = await Execute(request);

            // Follow redirect
            request = new RestRequest(HttpMethod.Get)
            {
                Resource = response.Headers.Location.AbsolutePath
            };
            if (method == HttpMethod.Get)
            {
                request.QueryParameters = response.Headers.Location.Query.Substring(1).SplitToKeyValuePairs('&', '=');
                response = await Execute(request);
            }
            else
            {
                var token = response.Headers.Location.Fragment.Substring(1).SplitToDictionary('&', '=');
                ObtainedToken = new Token(token["token_type"], token["access_token"], Convert.ToUInt32(token["expires_in"]));
            }
            return(response);
        }
예제 #3
0
 public static HttpMethod ToSystemHttp(this Windows.Web.Http.HttpMethod method)
 {
     if (method == Windows.Web.Http.HttpMethod.Post)
     {
         return(HttpMethod.Post);
     }
     else if (method == Windows.Web.Http.HttpMethod.Get)
     {
         return(HttpMethod.Get);
     }
     else
     {
         throw new NotSupportedException();
     }
 }