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); }
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); }
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 = ""; }
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()); }
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()); } }
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); }