コード例 #1
0
        private async Task <AOResult <T> > RequestAsync <T>(RequstType requestType, string resource, object requestBody, TimeSpan experation, StorageType storageType, string callMethodName)
        {
            var aoResult = new AOResult <T>();

            T result = default(T);

            try
            {
                switch (requestType)
                {
                case RequstType.Post:
                    result = await RestService.PostAsync <T>(resource, requestBody);

                    break;

                case RequstType.Get:
                    result = await RestService.GetAsync <T>(resource);

                    break;

                case RequstType.GetWithCache:
                    result = await RestService.GetAsyncWithCashe <T>(resource, experation, storageType);

                    break;

                case RequstType.Put:
                    result = await RestService.PutAsync <T>(resource, requestBody);

                    break;

                case RequstType.Delete:
                    result = await RestService.DeleteAsync <T>(resource, requestBody);

                    break;

                default:
                    throw new InvalidOperationException("Wrong request type");
                }
                aoResult.SetSuccess(result);
            }
            catch (WebException ex)
            {
                ErrorsTracker.TrackError(ex, ex.Message);
                aoResult.SetError(callMethodName + "_exception", ex.Message, ex);
                Debug.WriteLine("## Error rest service || " + callMethodName + " **** " + resource);
            }
            catch (HttpRequestException ex)
            {
                ErrorsTracker.TrackError(ex, ex.Message);
                aoResult.SetError(callMethodName + "_exception", ex.Message, ex);
                Debug.WriteLine("## Error rest service || " + callMethodName + " **** " + resource);
            }
            catch (Exception ex)
            {
                ErrorsTracker.TrackError(ex, ex.Message);
                throw;
            }
            return(aoResult);
        }
コード例 #2
0
        public static T SendRequst <T>(string pathname, RequstType type, object urlParams = null, object bodyParms = null, ContentType contentType = ContentType.FormUrlEncodedContent)
        {
            Response <T> response;
            var          url = host + pathname;

            try
            {
                var urlParamsDic        = GetPropertyDic(urlParams);
                var urlParamsCombineStr = "";
                if (urlParamsDic.Any())
                {
                    urlParamsCombineStr += "?";
                    urlParamsCombineStr += string.Join("&", urlParamsDic.Select(p => p.Key + "=" + p.Value));
                }
                if (!string.IsNullOrWhiteSpace(urlParamsCombineStr))
                {
                    url += urlParamsCombineStr;
                }

                switch (type)
                {
                case RequstType.Post:
                    response = Post <T>(url, bodyParms, contentType);
                    break;

                case RequstType.Put:
                    response = Put <T>(url, bodyParms, contentType);
                    break;

                case RequstType.Delete:
                    response = Delete <T>(url);
                    break;

                default:
                    response = GET <T>(url);
                    break;
                }
            }
            catch (HttpRequestException e)
            {
                Tgnet.Log.LoggerResolver.Current.Error("请求失败", e);
                throw e;
            }
            ExceptionHelper.ThrowIfTrue(response.Code != 0, string.Format("请求API失败!:code is {0},msg is {1}", response.Code, response.Message));
            return(response.Body);
        }
コード例 #3
0
        public HttpRequest(String requestType, String url)
        {
            if (requestType.ToLower().Equals("get") == true)
            {
                this.requestType = RequstType.GET;
            }
            else if (requestType.ToLower().Equals("post") == true)
            {
                this.requestType = RequstType.POST;
            }
            else
            {
                throw new ServerException("Failed to build Httprequest - requestType do not match GET or POST - " + requestType);
            }

            this._url = ExtractUrlParameter(url);

            _requestContent = "";
        }
コード例 #4
0
        private async Task <JObject> HttpRequest(string url, List <KeyValuePair <string, string> > headers, HttpContent content, RequstType option)
        {
            _client.DefaultRequestHeaders.Clear();
            foreach (KeyValuePair <string, string> head in headers)
            {
                _client.DefaultRequestHeaders.Add(head.Key, head.Value);
            }
            if (option == RequstType.Get)
            {
                HttpResponseMessage resp = await _client.GetAsync(url);

                return(new JObject(resp.ToString()));
            }
            return(new JObject());
        }
コード例 #5
0
ファイル: HttpUtil.cs プロジェクト: ly2018/ly2018.github.io
        public string ExecuteRequest(string domain, string url, string userName, string postString, ref HttpStatusCode gitResultCode, DataType dataType = DataType.Json, RequstType requstType = RequstType.Post)
        {
            try
            {
                //postString 这里即为传递的参数,根据数据格式传递,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来

                WebClient webClient = new WebClient();
                if (!string.IsNullOrEmpty(domain))
                {
                    webClient.Headers.Add("Host", domain);
                }

                if (requstType == RequstType.Post)
                {
                    switch ((int)dataType)
                    {
                    case (int)DataType.Json:
                    {
                        webClient.Headers.Add("Content-Type", " application/json");        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                    }
                    break;

                    case (int)DataType.JsonRpc:
                    {
                        webClient.Headers.Add("Content-Type", " application/json-rpc");        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                    }
                    break;

                    case (int)DataType.XML:
                    {
                        webClient.Headers.Add("Content-Type", "application/xml");        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                    }
                    break;

                    case (int)DataType.FormData:
                    default:
                    {
                        webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                    }
                    break;
                    }
                }
                return(GetContent(CookieDic[userName], url, postString, ref gitResultCode, dataType, requstType));
            }
            catch (Exception ex)
            {
                return(DateTime.Now + ":失败!\n" + ex.ToString());
            }
        }
コード例 #6
0
ファイル: HttpUtil.cs プロジェクト: ly2018/ly2018.github.io
        public static string GetContent(CookieContainer cookie, string url, string postString, ref HttpStatusCode gitResultCode, DataType dataType = DataType.Json, RequstType requstType = RequstType.Post)
        {
            string content = string.Empty;

            try
            {
                HttpWebRequest httpRequset = (HttpWebRequest)HttpWebRequest.Create(url);      //创建http 请求
                httpRequset.CookieContainer = cookie;                                         //设置cookie
                httpRequset.Method          = requstType == RequstType.Post ? "POST" : "GET"; //POST 提交
                httpRequset.KeepAlive       = true;
                httpRequset.UserAgent       = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko";
                httpRequset.Accept          = "text/html, application/xhtml+xml, */*";

                switch ((int)dataType)
                {
                case (int)DataType.Json:
                {
                    httpRequset.ContentType = "application/json";        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                }
                break;

                case (int)DataType.JsonRpc:
                {
                    httpRequset.ContentType = "application/json-rpc";        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                }
                break;

                case (int)DataType.XML:
                {
                    httpRequset.ContentType = "application/xml";        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                }
                break;

                case (int)DataType.FormData:
                default:
                {
                    httpRequset.ContentType = "application/x-www-form-urlencoded";        //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可                                                                             // int[] ss = new int[4] { 2000, 3000, 4000, 5000 };
                }
                break;
                }
                byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postString);
                httpRequset.ContentLength = bytes.Length;
                Stream stream = httpRequset.GetRequestStream();
                stream.Write(bytes, 0, bytes.Length);
                stream.Close();//以上是POST数据的写入


                HttpWebResponse httpResponse = (HttpWebResponse)httpRequset.GetResponse();

                using (Stream responsestream = httpResponse.GetResponseStream())
                {
                    using (StreamReader sr = new StreamReader(responsestream, System.Text.Encoding.UTF8))
                    {
                        content = sr.ReadToEnd();
                    }
                }
                gitResultCode = httpResponse.StatusCode;
            }
            catch (System.Net.WebException e)
            {
                gitResultCode = ((System.Net.HttpWebResponse)((System.Net.WebException)e).Response).StatusCode;
            }
            return(content);
        }