private string ReadContent(HttpResponseMessage response, HttpRequestTask requestTask) { byte[] contentBytes = response.Content.ReadAsByteArrayAsync().Result; contentBytes = PreventCutOff(contentBytes); if (requestTask.Encoding == null) { var charSet = response.Content.Headers.ContentType?.CharSet; var htmlCharset = EncodingExtensions.GetEncoding(charSet, contentBytes); return(htmlCharset.GetString(contentBytes, 0, contentBytes.Length)); } else { return(requestTask.Encoding.GetString(contentBytes, 0, contentBytes.Length)); } }
private HttpRequestMessage GenerateHttpRequestMessage(HttpRequestTask requestTask) { if (requestTask == null) { throw new ArgumentNullException(nameof(requestTask)); } var httpRequestMessage = new HttpRequestMessage(requestTask.HttpMethod, requestTask.RequestUrl); if (!requestTask.UserAgent.IsNullOrEmpty()) { httpRequestMessage.Headers.Add("User-Agent", requestTask.UserAgent); } foreach (var header in requestTask.Headers) { if (!header.Key.IsNullOrEmpty() && !header.Value.IsNullOrEmpty() && header.Key != "Content-Type" && header.Key != "User-Agent") { httpRequestMessage.Headers.Add(header.Key, header.Value); } } if (requestTask.HttpMethod == HttpMethod.Post || requestTask.HttpMethod == HttpMethod.Put) { var body = requestTask.Encoding.GetBytes(requestTask.Body); httpRequestMessage.Content = new StreamContent(new MemoryStream(body)); if (requestTask.Headers.ContainsKey("Content-Type")) { httpRequestMessage.Content.Headers.Add("Content-Type", requestTask.Headers["Content-Type"]); } if (requestTask.Headers.ContainsKey("X-Requested-With") && requestTask.Headers["X-Requested-With"] == "NULL") { httpRequestMessage.Content.Headers.Remove("X-Requested-With"); } else { if (!httpRequestMessage.Content.Headers.Contains("X-Requested-With") && !httpRequestMessage.Headers.Contains("X-Requested-With")) { httpRequestMessage.Content.Headers.Add("X-Requested-With", "XMLHttpRequest"); } } } return(httpRequestMessage); }
/// <summary> /// 向服务器获取数据并解析 /// </summary> /// <param name="eid"></param> /// <param name="procedure"></param> /// <param name="planCode"></param> /// <param name="station"></param> /// <param name="result"></param> /// <param name="testData"></param> /// <param name="log"></param> /// <returns></returns> public int DataGetAndAnalysis(string planCode, string eid, string imei, string sn, string iccid) { int ret = -1; //将请求数据序列化 RequestInfo requestInfo = new RequestInfo(); requestInfo.planCode = planCode; requestInfo.eid = eid; requestInfo.imei = imei; requestInfo.sn = sn; requestInfo.iccid = iccid; string requestStr = JsonConvert.SerializeObject(requestInfo); //开始请求 HttpRequestTask task = new HttpRequestTask(url, requestStr); string responseStr = task.GetResponse(); //解析响应数据 response = JsonConvert.DeserializeObject(responseStr, typeof(ResponseInfo)) as ResponseInfo; ret = (response.code == "1000") ? 0 : -1;//(int)ReturnCode.执行成功 return(ret); }
public async Task <ResponseData <string> > branchRequest(HttpRequestTask request, string url, string data, CancellationToken token) { return(await request(this.httpConfig, url, data, token)); }
public async Task <ResponseData <string> > branchRequest(IRequestMonitor monitor, HttpRequestTask httpRequestTask, string url, string data) { CancellationTokenSource cts = new CancellationTokenSource(); ResponseData <string> responsedata = null; //Await run try if (monitor != null) { monitor.IsRequesting = false; } try { responsedata = await httpRequestTask(this.httpConfig, url, data, cts.Token); } catch (AggregateException e) { throw e; } finally { cts.Dispose(); cts = null; if (monitor != null) { monitor.IsRequesting = false; } } return(responsedata); }