コード例 #1
0
ファイル: HttpFetcher.cs プロジェクト: Caskia/Ambition
 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));
     }
 }
コード例 #2
0
ファイル: HttpFetcher.cs プロジェクト: Caskia/Ambition
        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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 public async Task <ResponseData <string> > branchRequest(HttpRequestTask request, string url, string data, CancellationToken token)
 {
     return(await request(this.httpConfig, url, data, token));
 }
コード例 #5
0
        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);
        }