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); } }
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)); } }
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); }
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); } }
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); }
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()); } } }
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); }
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); }
/// <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, "")); }
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); }
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); }
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); } } }
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); }
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")); } } } }
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); }
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")); } } } }
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); }
/// <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, "")); }
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); }
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")); } }
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); }
/// <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)); }
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()); } } }
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; }
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))); }
public ResultWithoutCaching(HttpRequestResult jsonResult, HttpRequest request, object model) : base(jsonResult, request, model) { this.RequestResult.AddHeader("Cache-Control", "private, max-age=0, no-cache"); }