Ejemplo n.º 1
0
        public static ApiResult <CreateAuthorizerResult> CreateAuthorizer(Guid domainId, string authCode)
        {
            HttpRequestArgs args = new HttpRequestArgs();

            args.Method = "GET";
            args.Url    = String.Format(_createAuthorizerUrl, domainId, authCode);

            HttpRequestResult result = _httpService.Request(args);

            ApiResult <CreateAuthorizerResult> apiResult;

            if (result.Success == false)
            {
                _log.Write("ThirdPartyAccessTokenGetter.CreateAuthorizer 请求失败",
                           result.Exception.Message, TraceEventType.Error);

                apiResult         = new ApiResult <CreateAuthorizerResult>();
                apiResult.Message = result.Exception.Message;
                return(apiResult);
            }

            apiResult =
                JsonConvert.DeserializeObject <ApiResult <CreateAuthorizerResult> >(result.Content);

            return(apiResult);
        }
        public bool Contains(string key)
        {
            HttpRequestArgs args = new HttpRequestArgs();

            args.Method = "GET";
            args.Url    = String.Format(_controlledCacheServiceUrl + "Contains?key={0}", key);

            HttpRequestResult requestResult = _httpService.Request(args);

            if (requestResult.Success == false)
            {
                _log.Write("ControlledCachingService.Contains 请求失败", requestResult.Exception.Message, TraceEventType.Error);
                return(false);
            }

            bool result = false;

            if (bool.TryParse(requestResult.Content, out result))
            {
                return(result);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 3
0
        private async Task <HttpRequestResult <TSchema> > GetMoreAsync <TSchema>(RestApiDataConfig config, int pageSize, IParser <TSchema> parser) where TSchema : SchemaBase
        {
            if (Config?.PaginationConfig.IsServerSidePagination == false)
            {
                int page           = Convert.ToInt32(ContinuationToken);
                var totalAsTSchema = (_totalItems as IEnumerable <TSchema>);

                ContinuationToken = GetContinuationToken(string.Empty);
                var result = new HttpRequestResult <TSchema>();

                var pagination = config?.PaginationConfig as IMemorySorting;
                if (pagination != null)
                {
                    result.Items = totalAsTSchema.AsQueryable().OrderBy(pagination.OrderBy, pagination.OrderDirection).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                }
                else
                {
                    result.Items = totalAsTSchema.Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                }
                return(result);
            }
            else
            {
                var url = GetUrl(config, PageSize);
                var uri = GetContinuationUrl(url);
                return(await GetDataFromProvider(uri, parser, config.Headers));
            }
        }
Ejemplo n.º 4
0
        public async Task <JsonValue> PostAsync(string relativeUri)
        {
            HttpStringContent content = new HttpStringContent(message.Stringify(), UnicodeEncoding.Utf8, "application/json");

            HttpClient        httpClient = new HttpClient();
            HttpRequestResult result     = await httpClient.TryPostAsync(new Uri(serverBaseUri, relativeUri), content);

            if (result.Succeeded)
            {
                // We assume that if the server responds at all, it responds with valid JSON.
                return(JsonValue.Parse(await result.ResponseMessage.Content.ReadAsStringAsync()));
            }
            else
            {
                switch (result.ExtendedError.HResult)
                {
                case E_WINHTTP_TIMEOUT:
                // The connection to the server timed out.
                case E_WINHTTP_NAME_NOT_RESOLVED:
                case E_WINHTTP_CANNOT_CONNECT:
                case E_WINHTTP_CONNECTION_ERROR:
                // Unable to connect to the server. Check that you have Internet access.
                default:
                    // "Unexpected error connecting to server: ex.Message
                    return(null);
                }
            }
        }
        public GetQRCodeImageResult GetQRCodeImage(GetQRCodeImageArgs args)
        {
            GetQRCodeImageResult result;

            HttpRequestArgs requestArgs = new HttpRequestArgs();

            requestArgs.Method  = "POST";
            requestArgs.Url     = _fileServiceUri + "QRCode/GetQRCodeImage";
            requestArgs.Content = JsonConvert.SerializeObject(args);

            _log.Write("向文件服务器发起 GetQRCodeImage 请求", requestArgs.Content, TraceEventType.Verbose);

            HttpRequestResult requestResult = _httpService.Request(requestArgs);

            if (requestResult.Success)
            {
                _log.Write("文件服务器 GetQRCodeImage 返回", requestResult.Content, TraceEventType.Verbose);
                result = JsonConvert.DeserializeObject <GetQRCodeImageResult>(requestResult.Content);
            }
            else
            {
                result         = new GetQRCodeImageResult();
                result.Message = requestResult.Exception.Message;
            }
            return(result);
        }
        public void RefreshAccessToken()
        {
            if (String.IsNullOrEmpty(_refreshAccessTokenUri))
            {
                return;
            }

            HttpRequestArgs args = new HttpRequestArgs();

            args.Method = "GET";
            args.Url    = _refreshAccessTokenUri;

            HttpRequestResult result = _httpService.Request(args);

            if (result.Success == false)
            {
                //TODO:日志
                return;
            }

            JObject jObject = JObject.Parse(result.Content);
            JToken  jToken  = jObject["errcode"];

            if (jToken != null)
            {
                //TODO:失败
            }
            else
            {
                AccessToken = jObject["access_token"].ToString();
                int expiresIn = jObject["expires_in"].Value <int>();

                _accessTokenTimer.Change(0, expiresIn - (1 * 60 * 1000));
            }
        }
        public FileDownloadAgentResult DownloadAgent(FileDownloadAgentArgs args)
        {
            FileDownloadAgentResult result;

            HttpRequestArgs requestArgs = new HttpRequestArgs();

            requestArgs.Method  = "POST";
            requestArgs.Url     = _fileServiceUri + "File/DownloadAgent";
            requestArgs.Content = JsonConvert.SerializeObject(args);

            _log.Write("发起文件代理下载请求", requestArgs.Content, TraceEventType.Verbose);

            HttpRequestResult requestResult = _httpService.Request(requestArgs);

            if (requestResult.Success)
            {
                _log.Write("文件代理下载请求返回", requestResult.Content, TraceEventType.Verbose);
                result = JsonConvert.DeserializeObject <FileDownloadAgentResult>(requestResult.Content);
            }
            else
            {
                result         = new FileDownloadAgentResult();
                result.Message = requestResult.Exception.Message;
            }
            return(result);
        }
        public ApiResult DownloadQueueWithMediaId(FileDownloadQueueWithMediaIdArgs args)
        {
            ApiResult result;

            HttpRequestArgs requestArgs = new HttpRequestArgs();

            requestArgs.Method  = "POST";
            requestArgs.Url     = _fileServiceUri + "File/DownloadQueueWithMediaId";
            requestArgs.Content = JsonConvert.SerializeObject(args);

            _log.Write("发起队列文件代理下载请求(DownloadQueueWithMediaId)", requestArgs.Content, TraceEventType.Verbose);

            HttpRequestResult requestResult = _httpService.Request(requestArgs);

            if (requestResult.Success)
            {
                _log.Write("队列文件代理下载请求返回(DownloadQueueWithMediaId)", requestResult.Content, TraceEventType.Verbose);
                result = JsonConvert.DeserializeObject <ApiResult>(requestResult.Content);
            }
            else
            {
                result         = new ApiResult();
                result.Message = requestResult.Exception.Message;
            }

            return(result);
        }
Ejemplo n.º 9
0
        public override void Handle(string routingKey, string strCommand)
        {
            DatabaseSyncForwardCommand command =
                JsonConvert.DeserializeObject <DatabaseSyncForwardCommand>(strCommand);

            HttpRequestArgs args = new HttpRequestArgs();

            if (String.IsNullOrEmpty(command.Url) == false)
            {
                args.Url = command.Url;
            }
            else
            {
                args.Url = _url;
            }

            args.Content = command.CommandContent;

            _logService.Write("DatabaseSyncForwardCommandReceiver 发起HTTP请求",
                              JsonHelper.Serializer(args), TraceEventType.Verbose);

            HttpRequestResult result = _httpService.Request(args);

            if (result.Success)
            {
                _logService.Write("DatabaseSyncForwardCommandReceiver HTTP请求完成",
                                  JsonHelper.Serializer(result), TraceEventType.Verbose);
            }
            else
            {
                _logService.Write("DatabaseSyncForwardCommandReceiver HTTP请求失败",
                                  JsonHelper.Serializer(result), TraceEventType.Warning);
            }
        }
Ejemplo n.º 10
0
        private async Task <IEnumerable <TSchema> > GetCommentsFromProvider <TSchema>(string site, string postId, int pageSize, IParser <TSchema> parser) where TSchema : SchemaBase
        {
            var wordPressUrlRequest = $"{BaseUrl}/sites/{site}/posts/{postId}/replies?number={pageSize}&page={_commentsContinuationToken}";

            var settings = new HttpRequestSettings()
            {
                RequestedUri = new Uri(wordPressUrlRequest)
            };

            HttpRequestResult result = await HttpRequest.DownloadAsync(settings);

            if (result.Success)
            {
                var comments = await parser.ParseAsync(result.Result);

                if (comments != null)
                {
                    _hasMoreComments           = comments.Count() >= pageSize;
                    _commentsContinuationToken = GetCommentsContinuationToken(_commentsContinuationToken);
                    return(comments.ToList());
                }
                else
                {
                    _hasMoreComments = false;
                    return(new TSchema[0]);
                }
            }

            throw new RequestFailedException(result.StatusCode, result.Result);
        }
Ejemplo n.º 11
0
        protected override async Task <IEnumerable <TSchema> > GetDataAsync <TSchema>(WordPressDataConfig config, int maxRecords, IParser <TSchema> parser)
        {
            var wordPressUrlRequest = string.Empty;

            switch (config.QueryType)
            {
            case WordPressQueryType.Tag:
                wordPressUrlRequest = $"{BaseUrl}/sites/{config.Query}/posts/?tag={config.FilterBy}&number={maxRecords}";
                break;

            case WordPressQueryType.Category:
                wordPressUrlRequest = $"{BaseUrl}/sites/{config.Query}/posts/?category={config.FilterBy}&number={maxRecords}";
                break;

            default:
                wordPressUrlRequest = $"{BaseUrl}/sites/{config.Query}/posts/?number={maxRecords}";
                break;
            }

            var settings = new HttpRequestSettings()
            {
                RequestedUri = new Uri(wordPressUrlRequest)
            };

            HttpRequestResult result = await HttpRequest.DownloadAsync(settings);

            if (result.Success)
            {
                return(parser.Parse(result.Result));
            }

            throw new RequestFailedException(result.StatusCode, result.Result);
        }
        public void NormalGenerateTestTemplate(string html, int expectedCount, List <string> links)
        {
            Assert.IsTrue(links == null || expectedCount == links.Count);

            Uri baseUri = GetBaseUri();
            HttpRequestResult result = new HttpRequestResult()
            {
                Content    = html,
                RequestUrl = baseUri,
                ResultUrl  = baseUri
            };


            List <HyperLink> hyperlinks = new HtmlParser(result).GenerateHyperLinks();

            Assert.AreEqual(hyperlinks.Count, expectedCount);

            if (links != null)
            {
                for (int i = 0; i < links.Count; i++)
                {
                    Assert.AreEqual(links[i], hyperlinks[i].AbsoluteUri.ToString());
                }
            }
        }
Ejemplo n.º 13
0
        protected override async Task <IEnumerable <TSchema> > GetDataAsync <TSchema>(RssDataConfig config, int pageSize, IParser <TSchema> parser)
        {
            ContinuationToken = "1";
            var settings = new HttpRequestSettings()
            {
                RequestedUri = config.Url
            };

            HttpRequestResult result = await HttpRequest.DownloadRssAsync(settings);

            if (result.Success)
            {
                var items = await parser.ParseAsync(result.Result);

                if (items != null && items.Any())
                {
                    _totalItems = items.ToList();

                    var totalAsTSchema = (_totalItems as IEnumerable <TSchema>);

                    _hasMoreItems     = totalAsTSchema.Count() > pageSize;
                    ContinuationToken = GetContinuationToken(ContinuationToken);

                    var resultToReturn = totalAsTSchema.AsQueryable().OrderBy(config.OrderBy, config.OrderDirection).Take(pageSize).ToList();
                    return(resultToReturn);
                }
                _hasMoreItems = false;
                return(new TSchema[0]);
            }

            throw new RequestFailedException(result.StatusCode, result.Result);
        }
Ejemplo n.º 14
0
        public static async Task <HttpRequestResult <TObject> > HttpRequestResult <TObject>(this Task <HttpResponseMessage> responseMessage)
        {
            using (HttpResponseMessage result = await responseMessage.ConfigureAwait(false))
            {
                if (result == null)
                {
                    return(default(HttpRequestResult <TObject>));
                }
                HttpCall call = result.RequestMessage.GetHttpCall();

                var jsonStr = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

                try
                {
                    var response = JsonConvert.DeserializeObject <TObject>(jsonStr);
                    var error    = JsonConvert.DeserializeObject <ErrorModel>(jsonStr);

                    return(new HttpRequestResult <TObject>(result, response, error));
                }
                catch (Exception ex)
                {
                    call.Exception = (Exception) new FlurlParsingException(call, "JSON", await result.Content.ReadAsStringAsync(), ex);
                    HttpResponseMessage httpResponseMessage = await HandleExceptionAsync(call, call.Exception, CancellationToken.None).ConfigureAwait(false);

                    return(default(HttpRequestResult <TObject>));
                }
                call = (HttpCall)null;
            }
            HttpRequestResult <TObject> obj = new HttpRequestResult <TObject>(HttpStatusCode.BadRequest);

            return(obj);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 微信分享时获取配置参数
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public async Task <HttpRequestResult> GetJsApiConfigAsync()
        {
            var accessTokenResult = await GetAccessTokenAsync();

            var url           = $"https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token={accessTokenResult.Data.ToString()}";
            var requestResult = await _aSampleHttpClient.GetAsync <JsApiResult>(url);

            if (requestResult.ErrCode != "0")
            {
                return(HttpRequestResult.Error(requestResult.ErrMsg));
            }

            var dic       = new SortedDictionary <string, object>();
            var noncestr  = WeChatPayUtility.GeneratorNonceStr();
            var timestamp = WeChatPayUtility.GenerateTimeStamp();

            dic.SetValue("noncestr", noncestr);
            dic.SetValue("timestamp", timestamp);
            dic.SetValue("url", url);
            dic.SetValue("jsapi_ticket", requestResult.Ticket);

            var shaStr    = dic.ToUrlString();
            var signature = WeChatPayUtility.MakeSign(shaStr, _wechatOption.MechKey);
            var result    = new JsApiConfigResult
            {
                AppId     = _wechatOption.WxAppId,
                TimeStamp = timestamp,
                NonceStr  = noncestr,
                Signature = signature,
            };

            return(HttpRequestResult.Success(result, ""));
        }
Ejemplo n.º 16
0
        public async Task <IEnumerable <TSchema> > GetDataByIdsAsync <TSchema>(DynamicStorageDataConfig config, IEnumerable <string> ids, IParser <TSchema> parser) where TSchema : SchemaBase
        {
            var url = $"{config.Url}&ids={string.Join("&ids=", ids)}";

            var settings = new HttpRequestSettings
            {
                RequestedUri = new Uri(url),
                UserAgent    = "NativeHost"
            };

            settings.Headers["WAS-APPID"]        = config.AppId;
            settings.Headers["WAS-STOREID"]      = config.StoreId;
            settings.Headers["WAS-DEVICETYPE"]   = config.DeviceType;
            settings.Headers["WAS-ISBACKGROUND"] = config.IsBackgroundTask.ToString();

            HttpRequestResult result = await HttpRequest.DownloadAsync(settings);

            if (result.Success)
            {
                var items = await parser.ParseAsync(result.Result);

                return(items);
            }

            throw new RequestFailedException(result.StatusCode, result.Result);
        }
Ejemplo n.º 17
0
        private async Task <IEnumerable <TSchema> > GetDataFromProvider <TSchema>(DynamicStorageDataConfig config, int pageSize, IParser <TSchema> parser) where TSchema : SchemaBase
        {
            var settings = new HttpRequestSettings
            {
                RequestedUri = GetUrl(config, pageSize),
                UserAgent    = "NativeHost"
            };

            settings.Headers["WAS-APPID"]        = config.AppId;
            settings.Headers["WAS-STOREID"]      = config.StoreId;
            settings.Headers["WAS-DEVICETYPE"]   = config.DeviceType;
            settings.Headers["WAS-ISBACKGROUND"] = config.IsBackgroundTask.ToString();

            HttpRequestResult result = await HttpRequest.DownloadAsync(settings);

            if (result.Success)
            {
                var items = await parser.ParseAsync(result.Result);

                _hasMoreItems     = items.Any();
                ContinuationToken = GetContinuationToken(ContinuationToken);
                return(items);
            }

            throw new RequestFailedException(result.StatusCode, result.Result);
        }
Ejemplo n.º 18
0
        public async static Task <HttpResponseMessage> SendHeadRequestAsync(Uri url)
        {
            var filter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();

            filter.CacheControl.WriteBehavior = Windows.Web.Http.Filters.HttpCacheWriteBehavior.NoCache;
            using (var httpClient = new HttpClient(filter))
            {
                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, url);

                HttpRequestResult result = await httpClient.TrySendRequestAsync(request);

                if (result.Succeeded)
                {
#if DEBUG
                    Logger.Log("Sending head request with: " + url);
#endif
                    return(result.ResponseMessage);
                }
                else
                {
#if DEBUG
                    Logger.Log("SendHeadRequestAsync exception for url: " + url + " HRESULT 0x" + result.ExtendedError.HResult.ToString("x"));
#endif
                    return(null);
                }
            }
        }
Ejemplo n.º 19
0
        public async Task <IEnumerable <TSchema> > GetComments <TSchema>(string site, string postId, int maxRecords, IParser <TSchema> parser) where TSchema : SchemaBase
        {
            var wordPressUrlRequest = $"{BaseUrl}/sites/{site}/posts/{postId}/replies";

            var settings = new HttpRequestSettings()
            {
                RequestedUri = new Uri(wordPressUrlRequest)
            };

            HttpRequestResult result = await HttpRequest.DownloadAsync(settings);

            if (result.Success)
            {
                var comments = parser.Parse(result.Result);
                if (comments != null)
                {
                    return(comments
                           .Take(maxRecords)
                           .ToList());
                }
                else
                {
                    return(new TSchema[0]);
                }
            }

            throw new RequestFailedException(result.StatusCode, result.Result);
        }
        public static async Task <HttpRequestResult <TObject> > HttpRequestResult <TObject>(this Task <HttpResponseMessage> responseMessage)
        {
            HttpRequestResult <TObject> obj;

            try
            {
                using (HttpResponseMessage result = await responseMessage.ConfigureAwait(false))
                {
                    if (result == null)
                    {
                        var defaultTObject = default(TObject);
                        return(new HttpRequestResult <TObject>(new HttpResponseMessage(HttpStatusCode.ServiceUnavailable), defaultTObject, new ErrorModel()));
                    }

                    var jsonStr = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

                    try
                    {
                        var jToken   = JsonConvert.DeserializeObject <JToken>(jsonStr);
                        var response = JsonConvert.DeserializeObject <TObject>(jsonStr);
                        var error    = (((jToken.Type == JTokenType.Object)) ? JsonConvert.DeserializeObject <ErrorModel>(jsonStr):null);

                        if (!result.IsSuccessStatusCode &&
                            (error == null || (string.IsNullOrEmpty(error.Error) && string.IsNullOrWhiteSpace(error.ErrorDescription))))
                        {
                            if (jToken.Type == JTokenType.Object &&
                                ((JObject)jToken).ContainsKey("message"))
                            {
                                error = new ErrorModel()
                                {
                                    Error            = "Undefined",
                                    ErrorDescription = ((JObject)jToken).GetValue("message")?.Value <string>()
                                };
                            }
                        }

                        return(new HttpRequestResult <TObject>(result, response, error));
                    }
                    catch (Exception ex)
                    {
                        var defaultTObject = default(TObject);
                        return(new HttpRequestResult <TObject>(result, defaultTObject, new ErrorModel()
                        {
                            Error = ex.Source, ErrorDescription = ex.Message
                        }));
                    }
                }
            }
            catch (Exception e)
            {
                obj = new HttpRequestResult <TObject>(HttpStatusCode.InternalServerError);
            }

            return(obj);
        }
Ejemplo n.º 21
0
        private async void QueryRecordButton_Click(object sender, RoutedEventArgs e)
        {
            Records.Clear();
            DateTimeOffset StartDateTime = (DateTimeOffset)StartDatePicker.Date.Value.Date + StartTimePicker.Time;
            DateTimeOffset EndDateTime   = (DateTimeOffset)EndDatePicker.Date.Value.Date + EndTimePicker.Time;
            User           user          = UserComboBox.SelectedItem as User;

            var filter = new HttpBaseProtocolFilter();

            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired);
            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName);
            HttpClient httpClient = new HttpClient(filter);

            HttpStringContent content = new HttpStringContent("uid=" + user.UserId + "&st=" + StartDateTime.ToString("yyyy-MM-dd HH:mm:ss") + "&et=" + EndDateTime.ToString("yyyy-MM-dd HH:mm:ss") + "&pi=0&ps=100", Windows.Storage.Streams.UnicodeEncoding.Utf8, "application/x-www-form-urlencoded");

            HttpRequestResult requestResult = await httpClient.TryPostAsync(new Uri("https://a.rouor.com/LoisMeeting/record/my"), content);

            if (requestResult.Succeeded)
            {
                if (JsonObject.TryParse(requestResult.ResponseMessage.Content.ToString(), out JsonObject resultJsonObject))
                {
                    if (resultJsonObject.GetNamedNumber("r") == 0)
                    {
                        JsonArray dataJsonArray = resultJsonObject.GetNamedArray("d");
                        if (dataJsonArray.Count <= 0)
                        {
                            Status.Insert(0, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss   ") + "該時間段内沒有預訂會議室!");
                            return;
                        }
                        else
                        {
                            for (uint i = 0; i < dataJsonArray.Count; i++)
                            {
                                Record record = new Record();
                                record.Id = (int)dataJsonArray.GetObjectAt(i).GetNamedNumber("id");
                                if (!Records.Contains(record))
                                {
                                    record.StartDateTime = DateTimeOffset.Parse(dataJsonArray.GetObjectAt(i).GetNamedString("st"));
                                    record.EndDateTime   = DateTimeOffset.Parse(dataJsonArray.GetObjectAt(i).GetNamedString("et"));
                                    record.MeetingRoom   = dataJsonArray.GetObjectAt(i).GetNamedString("rname");
                                    record.UserName      = dataJsonArray.GetObjectAt(i).GetNamedString("uname");
                                    record.Description   = dataJsonArray.GetObjectAt(i).GetNamedString("desc");
                                    Records.Insert((int)i, record);
                                }
                            }
                        }
                    }
                    else
                    {
                        Status.Insert(0, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss   ") + resultJsonObject.GetNamedString("e"));
                    }
                }
            }
        }
Ejemplo n.º 22
0
        private async void Start_Click(object sender, RoutedEventArgs e)
        {
            // The value of 'AddressField' is set by the user and is therefore untrusted input. If we can't create a
            // valid, absolute URI, we'll notify the user about the incorrect input.
            Uri resourceUri = Helpers.TryParseHttpUri(AddressField.Text);

            if (resourceUri == null)
            {
                rootPage.NotifyUser("Invalid URI.", NotifyType.ErrorMessage);
                return;
            }

            Helpers.ScenarioStarted(StartButton, CancelButton, OutputField);
            rootPage.NotifyUser("In progress", NotifyType.StatusMessage);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, resourceUri);

            MeteredConnectionPriority priority = MeteredConnectionPriority.Low;

            if (MediumRadio.IsChecked.Value)
            {
                priority = MeteredConnectionPriority.Medium;
            }
            else if (HighRadio.IsChecked.Value)
            {
                priority = MeteredConnectionPriority.High;
            }
            request.Properties[HttpMeteredConnectionFilter.MeteredConnectionPriorityPropertyName] = priority;

            // This sample uses a "try" in order to support TaskCanceledException.
            // If you don't need to support cancellation, then the "try" is not needed.
            try
            {
                HttpRequestResult result = await httpClient.TrySendRequestAsync(request).AsTask(cts.Token);

                if (result.Succeeded)
                {
                    await Helpers.DisplayTextResultAsync(result.ResponseMessage, OutputField, cts.Token);

                    rootPage.NotifyUser("Completed", NotifyType.StatusMessage);
                }
                else
                {
                    Helpers.DisplayWebError(rootPage, result.ExtendedError);
                }
            }
            catch (TaskCanceledException)
            {
                rootPage.NotifyUser("Request canceled.", NotifyType.ErrorMessage);
            }

            Helpers.ScenarioCompleted(StartButton, CancelButton);
        }
Ejemplo n.º 23
0
        private async void QueryRoomButton_Click(object sender, RoutedEventArgs e)
        {
            DateTimeOffset StartDateTime = (DateTimeOffset)StartDatePicker.Date.Value.Date + StartTimePicker.Time;
            DateTimeOffset EndDateTime   = (DateTimeOffset)EndDatePicker.Date.Value.Date + EndTimePicker.Time;

            if (StartDateTime.DateTime.Minute % 15 != 0)
            {
                StartDateTime = StartDateTime - TimeSpan.FromMinutes(StartDateTime.DateTime.Minute % 15);
            }
            if (EndDateTime.DateTime.Minute % 15 != 0)
            {
                EndDateTime = EndDateTime + TimeSpan.FromMinutes(15 - EndDateTime.DateTime.Minute % 15);
            }

            var filter = new HttpBaseProtocolFilter();

            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired);
            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
            filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName);
            HttpClient httpClient = new HttpClient(filter); HttpStringContent content = new HttpStringContent("st=" + StartDateTime.ToString("yyyy-MM-dd HH:mm:ss") + "&et=" + EndDateTime.ToString("yyyy-MM-dd HH:mm:ss"), Windows.Storage.Streams.UnicodeEncoding.Utf8, "application/x-www-form-urlencoded");

            HttpRequestResult requestResult = await httpClient.TryPostAsync(new Uri("https://a.rouor.com/LoisMeeting/record/room"), content);

            if (requestResult.Succeeded)
            {
                if (JsonObject.TryParse(requestResult.ResponseMessage.Content.ToString(), out JsonObject resultJsonObject))
                {
                    if (resultJsonObject.GetNamedNumber("r") == 0)
                    {
                        JsonArray dataJsonArray = resultJsonObject.GetNamedArray("d");
                        if (dataJsonArray.Count <= 0)
                        {
                            Status.Insert(0, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss   ") + "該時間段内沒有可以會議室,請重新選擇時段!");
                            return;
                        }
                        else
                        {
                            string room = StartDateTime.ToString("yyyy/MM/dd HH:mm--") + EndDateTime.ToString("yyyy/MM/dd HH:mm") + "空閑會議室有:";
                            for (uint i = 0; i < dataJsonArray.Count; i++)
                            {
                                room += dataJsonArray.GetObjectAt(i).GetNamedString("name") + "; ";
                            }
                            Status.Insert(0, room);
                        }
                    }
                    else
                    {
                        Status.Insert(0, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss   ") + resultJsonObject.GetNamedString("e"));
                    }
                }
            }
        }
Ejemplo n.º 24
0
        private HttpRequestResult <T> DoRequest <T>(Uri uri, object model, string verb)
        {
            var result = new HttpRequestResult <T>();
            HttpResponseMessage httpResponseMessage = null;

            using (var client = new HttpClient())
            {
                client.BaseAddress = uri;
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var content = model != null
                    ? new StringContent(JsonConvert.SerializeObject(model, this.JsonSettings), Encoding.UTF8, "application/json")
                    : null;

                if ("POST".Equals(verb, StringComparison.InvariantCultureIgnoreCase))
                {
                    httpResponseMessage = client.PostAsync(uri, content).Result;
                }
                else if ("PUT".Equals(verb, StringComparison.InvariantCultureIgnoreCase))
                {
                    httpResponseMessage = client.PutAsync(uri, content).Result;
                }
                else if ("DELETE".Equals(verb, StringComparison.InvariantCultureIgnoreCase))
                {
                    httpResponseMessage = client.DeleteAsync(uri).Result;
                }
                else if ("GET".Equals(verb, StringComparison.InvariantCultureIgnoreCase))
                {
                    httpResponseMessage = client.GetAsync(uri).Result;
                }

                var resultContent = httpResponseMessage.Content.ReadAsStringAsync().Result;

                result.SetStatus(httpResponseMessage.IsSuccessStatusCode);
                result.SetMessage(httpResponseMessage.ReasonPhrase);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    T response = default(T);

                    if (!string.IsNullOrEmpty(resultContent))
                    {
                        response = JsonConvert.DeserializeObject <T>(resultContent);
                        result.SetResult(response);
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 获取用户基本信息
        /// </summary>
        /// <returns></returns>
        public async Task <HttpRequestResult> GetBasicInfoAsync(string openId)
        {
            var accessTokenResult = await GetAccessTokenAsync();

            if (accessTokenResult.IsError)
            {
                return(HttpRequestResult.Error(accessTokenResult.Message));
            }
            var accessToken = accessTokenResult.Data.ToString();
            var url         = $"https://api.weixin.qq.com/cgi-bin/user/info?access_token={accessToken}&openid={openId}&lang=zh_CN";
            var result      = await _aSampleHttpClient.GetAsync <WxUserInfoResult>(url);

            return(HttpRequestResult.Success <WxUserInfoResult>(result, ""));
        }
Ejemplo n.º 26
0
        private async void SendInitialGetButton_Click(object sender, RoutedEventArgs e)
        {
            Uri resourceAddress;

            // The value of 'AddressField' is set by the user and is therefore untrusted input. If we can't create a
            // valid, absolute URI, we'll notify the user about the incorrect input.
            if (!Helpers.TryGetUri(AddressField.Text, out resourceAddress))
            {
                rootPage.NotifyUser("Invalid URI.", NotifyType.ErrorMessage);
                return;
            }

            Helpers.ScenarioStarted(SendInitialGetButton, CancelButton, OutputField);
            rootPage.NotifyUser("In progress", NotifyType.StatusMessage);

            try
            {
                HttpRequestResult result = await httpClient.TryGetAsync(resourceAddress).AsTask(cts.Token);

                if (result.Succeeded)
                {
                    HttpCookieCollection cookieCollection = filter.CookieManager.GetCookies(resourceAddress);
                    OutputField.Text = cookieCollection.Count + " cookies found.\r\n";
                    foreach (HttpCookie cookie in cookieCollection)
                    {
                        OutputField.Text += "--------------------\r\n";
                        OutputField.Text += "Name: " + cookie.Name + "\r\n";
                        OutputField.Text += "Domain: " + cookie.Domain + "\r\n";
                        OutputField.Text += "Path: " + cookie.Path + "\r\n";
                        OutputField.Text += "Value: " + cookie.Value + "\r\n";
                        OutputField.Text += "Expires: " + cookie.Expires + "\r\n";
                        OutputField.Text += "Secure: " + cookie.Secure + "\r\n";
                        OutputField.Text += "HttpOnly: " + cookie.HttpOnly + "\r\n";
                    }

                    rootPage.NotifyUser("Completed", NotifyType.StatusMessage);
                    SendNextRequestButton.IsEnabled = true;
                }
                else
                {
                    Helpers.DisplayWebError(rootPage, result.ExtendedError);
                }
            }
            catch (TaskCanceledException)
            {
                rootPage.NotifyUser("Request canceled.", NotifyType.ErrorMessage);
            }

            Helpers.ScenarioCompleted(SendInitialGetButton, CancelButton);
        }
        private async void Start_Click(object sender, RoutedEventArgs e)
        {
            // The value of 'AddressField' is set by the user and is therefore untrusted input. If we can't create a
            // valid, absolute URI, we'll notify the user about the incorrect input.
            Uri resourceUri = Helpers.TryParseHttpUri(AddressField.Text);

            if (resourceUri == null)
            {
                rootPage.NotifyUser("Invalid URI.", NotifyType.ErrorMessage);
                return;
            }

            Helpers.ScenarioStarted(StartButton, CancelButton, null);
            ResetFields();
            rootPage.NotifyUser("In progress", NotifyType.StatusMessage);

            const uint        streamLength  = 100000;
            HttpStreamContent streamContent = new HttpStreamContent(new SlowInputStream(streamLength));

            // If stream length is unknown, the request is chunked transfer encoded.
            if (!ChunkedRequestToggle.IsOn)
            {
                streamContent.Headers.ContentLength = streamLength;
            }

            IProgress <HttpProgress> progress = new Progress <HttpProgress>(ProgressHandler);

            // This sample uses a "try" in order to support TaskCanceledException.
            // If you don't need to support cancellation, then the "try" is not needed.
            try
            {
                HttpRequestResult result = await httpClient.TryPostAsync(resourceUri, streamContent).AsTask(cts.Token, progress);

                if (result.Succeeded)
                {
                    rootPage.NotifyUser("Completed", NotifyType.StatusMessage);
                }
                else
                {
                    Helpers.DisplayWebError(rootPage, result.ExtendedError);
                }
            }
            catch (TaskCanceledException)
            {
                rootPage.NotifyUser("Request canceled.", NotifyType.ErrorMessage);
            }

            RequestProgressBar.Value = 100;
            Helpers.ScenarioCompleted(StartButton, CancelButton);
        }
Ejemplo n.º 28
0
 public ActionResult Step3()
 {
     try
     {
         LogHelper.WriteInfo("Step3");
         string imgUrl   = string.Empty;
         string authCode = string.Empty;
         string phone    = Session["Phone"].ToString();
         if (Session["AuthCode"] != null)
         {
             authCode = Session["AuthCode"].ToString();
         }
         else if (HttpContext.Request.Form["txtAuthCode"] != null && HttpContext.Request.Form["txtAuthCode"] != "")
         {
             authCode = HttpContext.Request.Form["txtAuthCode"];
         }
         else
         {
             Step2();
         }
         DefaultParametes def   = HttpRequestTool.GetDefaultParametes(1, 4);
         EntryParametes   entry = new EntryParametes()
         {
             authCode = authCode,
             phone    = phone
         };
         OutputParametes   inp        = HttpRequestTool.GetInputParametes(def, entry);
         HttpRequestResult httpResult = HttpRequestTool.CheckInputParametes(inp, 3);
         if (httpResult.state == 0)         //成功
         {
             return(View("Success"));
         }
         else if (httpResult.state == 1)   //下一步
         {
             Session.Add("AuthCode", authCode);
             return(View("Step4"));
         }
         else                             //异常
         {
             ViewBag.Message = httpResult.context;
             return(View("Step3"));
         }
     }
     catch (Exception e)
     {
         LogHelper.WriteError(e.Message, e);
         return(View("Step3"));
     }
 }
Ejemplo n.º 29
0
        private async void SendNextRequestButton_Click(object sender, RoutedEventArgs e)
        {
            Uri resourceAddress;

            // The value of 'AddressField' is set by the user and is therefore untrusted input. If we can't create a
            // valid, absolute URI, we'll notify the user about the incorrect input.
            if (!Helpers.TryGetUri(AddressField.Text, out resourceAddress))
            {
                rootPage.NotifyUser("Invalid URI.", NotifyType.ErrorMessage);
                return;
            }

            Helpers.ScenarioStarted(SendNextRequestButton, CancelButton, OutputField);
            rootPage.NotifyUser("In progress", NotifyType.StatusMessage);
            if (CookieUsageBehaviorToggle.IsOn)
            {
                filter.CookieUsageBehavior = HttpCookieUsageBehavior.Default;
            }
            else
            {
                // Disable cookie handling - this will do two things: no cookies are attached to outgoing request, and
                // cookies contained in incoming server responses are not added to the CookieManager of the HttpBaseProtocolFilter.
                filter.CookieUsageBehavior = HttpCookieUsageBehavior.NoCookies;
            }

            // This sample uses a "try" in order to support TaskCanceledException.
            // If you don't need to support cancellation, then the "try" is not needed.
            try
            {
                HttpRequestResult result = await httpClient.TryGetAsync(resourceAddress).AsTask(cts.Token);

                if (result.Succeeded)
                {
                    await Helpers.DisplayTextResultAsync(result.ResponseMessage, OutputField, cts.Token);

                    rootPage.NotifyUser("Completed. Response came from " + result.ResponseMessage.Source.ToString() + ".", NotifyType.StatusMessage);
                }
                else
                {
                    Helpers.DisplayWebError(rootPage, result.ExtendedError);
                }
            }
            catch (TaskCanceledException)
            {
                rootPage.NotifyUser("Request canceled.", NotifyType.ErrorMessage);
            }

            Helpers.ScenarioCompleted(SendNextRequestButton, CancelButton);
        }
Ejemplo n.º 30
0
        /// <summary>
        /// 创建菜单按钮
        /// </summary>
        /// <param name="menuJsonStr"></param>
        /// <returns></returns>
        public async Task <HttpRequestResult> CreateMenuAsync(string menuJsonStr)
        {
            //获取微信令牌
            var accessToken = await GetAccessTokenAsync();

            //创建菜单
            var createMenuUrl = $"https://api.weixin.qq.com/cgi-bin/menu/create?access_token={accessToken.Data.ToString()}";
            var result        = await _aSampleHttpClient.PostAsync <CreateMenuResult>(createMenuUrl, menuJsonStr);

            if (result.ErrorCode == "0")
            {
                return(HttpRequestResult.Success(result, ""));
            }
            return(HttpRequestResult.Error(result.ErrorMsg));
        }
Ejemplo n.º 31
0
 public HtmlParser(HttpRequestResult HttpRequestResult)
 {
     this.HttpRequestResult = HttpRequestResult;
 }
        public void NormalGenerateTestTemplate(string html, int expectedCount, List<string> links)
        {
            Assert.IsTrue(links == null || expectedCount == links.Count);

            Uri baseUri = GetBaseUri();
            HttpRequestResult result = new HttpRequestResult()
            {
                Content = html,
                RequestUrl = baseUri,
                ResultUrl = baseUri
            };


            List<HyperLink> hyperlinks = new HtmlParser(result).GenerateHyperLinks();

            Assert.AreEqual(hyperlinks.Count, expectedCount);

            if (links != null)
            {
                for (int i = 0; i < links.Count; i++)
                {
                    Assert.AreEqual(links[i], hyperlinks[i].AbsoluteUri.ToString());
                }
            }
        }
Ejemplo n.º 33
0
        public HttpRequestResult Get(Uri url)
        {
            HttpRequestResult results = (from httpRequestResult in HttpRequestResults
                            where httpRequestResult.RequestUrl.Equals(url)
                            select httpRequestResult).FirstOrDefault();

            if (results == null)
            {
                results = new HttpRequestResult();
                results.RequestUrl = url;
                results.Start = DateTime.Now;
                results.BrowserUsed = this;

                StreamReader streamReader = null;
                WebResponse response = null;
                try
                {
                    var request = (HttpWebRequest)WebRequest.Create(url);
                    request.MaximumAutomaticRedirections = MaximumAutomaticRedirections;
                    request.AllowAutoRedirect = AllowAutoRedirect;
                    request.UserAgent = UserAgent;
                    request.Accept = Accept;
                    request.Headers.Add("Accept-Charset", AcceptCharset);
                    request.Headers.Add("Accept-Language", AcceptLanguage);
                    request.Credentials = this.Credentials;

                    response = request.GetResponse();
                    streamReader = new StreamReader(response.GetResponseStream());

                    string content = streamReader.ReadToEnd();

                    results.ContentType = response.ContentType;
                    if (results.IsCss || results.IsHtml)
                    {
                        results.Content = content;
                    }
                    results.ResultUrl = request.Address;

                    HttpRequestResults.Add(results);
                }
                catch (WebException exception)
                {
                    var error = new HttpValidationError()
                    {
                        AbsoluteUri = url,
                        Error = exception,
                        Message = exception.Message
                    };

                    if (exception.Status == WebExceptionStatus.ProtocolError)
                        error.HttpCode = (int)((HttpWebResponse)exception.Response).StatusCode;

                    results.Error = error;
                }
                catch (Exception exception)
                {
                    results.Error = new HttpValidationError()
                        {
                            AbsoluteUri = url,
                            Error = exception,
                            Message = exception.Message
                        };
                }
                finally
                {
                    results.End = DateTime.Now;
                    if (streamReader != null)
                    {
                        try { streamReader.Close(); }
                        catch { }
                    }
                    if (response != null)
                    {
                        try { response.Close(); }
                        catch { }
                    }
                }
            }

            return results;
        }
Ejemplo n.º 34
0
 public CssParser(HttpRequestResult HttpRequestResult)
 {
     this.HttpRequestResult = HttpRequestResult;
 }
        private bool IsSuccess(HttpRequestResult result)
        {
            if (result.Error != null)
            {
                return false;
            }

            if (result.Links != null)
            {
                foreach (var link in result.Links)
                {
                    if (link.IsBroken)
                    {
                        return false;
                    }
                }
            }

            return true;
        }
 private string PassFail(HttpRequestResult result)
 {
     return IsSuccess(result) ? "Passed" : "Failed";
 }
        public OutputTypeErrorInfo GenerateErrorInfo(HttpRequestResult result)
        {
            if (!IsSuccess(result))
            {
                if (result != null && result.Error != null)
                {
                    if (result.Error.Error != null) return GenerateErrorInfo(result.Error.Error);

                    return
                        GenerateErrorInfo(
                            string.Format("HTTP Code: {0}\r\nMessage: {1}\r\nBrowser Name: {2}", result.Error.HttpCode, result.Error.Message, result.BrowserUsed.Name),
                            null);
                }

                string brokenLinksMessage = string.Format("Browser Used: {0}\r\n", result.BrowserUsed.Name);
                if (result.Links != null)
                {
                    foreach (var link in result.Links)
                    {
                        if (link.IsBroken)
                        {
                            string brokenLinkMessage = string.Format("Broken Link Found.  The content is as follows.\n\t{0}\n", link.Content);
                            brokenLinksMessage += brokenLinkMessage;
                        }
                    }

                    return
                        GenerateErrorInfo(
                            brokenLinksMessage,
                            null);
                }

                return null;
            }
            else
                return null;
        }
        public UnitTestResultType GenerateUnitTestResult(Guid executionId, Guid testId, Guid unitTestTypeId, Guid testListId, HttpRequestResult result)
        {
            return GenerateUnitTestResult(executionId, testId, string.Format("Browser = {0}, RequestUrl = {1}", result.BrowserUsed.Name, result.RequestUrl.AbsoluteUri),
                                   ComputerName,
                                   result.End.Subtract(result.Start), result.Start, result.End, unitTestTypeId,
                                   PassFail(result), testListId, executionId,
                                   GenerateOutput(null, null, GenerateErrorInfo(result)));

        }
Ejemplo n.º 39
0
 public ResultWithoutCaching(HttpRequestResult jsonResult, HttpRequest request, object model)
     : base(jsonResult, request, model)
 {
     this.RequestResult.AddHeader("Cache-Control", "private, max-age=0, no-cache");
 }