/// <summary> /// 处理请求 /// </summary> /// <param name="url"></param> /// <param name="param"></param> /// <param name="cookies"></param> /// <param name="method"></param> /// <param name="timeout_second"></param> /// <param name="handler"></param> public static void HttpRequestHandler( string url, Dictionary <string, string> param, List <Cookie> cookies, RequestMethodEnum method, int timeout_second, VoidFunc <HttpWebResponse, HttpStatusCode> handler) { HttpWebRequest req = null; HttpWebResponse res = null; try { //连接到目标网页 req = (HttpWebRequest)WebRequest.Create(url); req.Timeout = timeout_second * 1000;//10s请求超时 req.Method = GetMethod(method); req.ContentType = "application/x-www-form-urlencoded"; //添加cookie if (ValidateHelper.IsPlumpList(cookies)) { req.CookieContainer = new CookieContainer(); foreach (var c in cookies) { req.CookieContainer.Add(c); } } //如果是post并且有参数 if (method == RequestMethodEnum.POST && ValidateHelper.IsPlumpDict(param)) { param = param.NotNull(); var post_data = param.ToUrlParam(); var data = Encoding.UTF8.GetBytes(post_data); using (var stream = req.GetRequestStream()) { stream.Write(data, 0, data.Length); } } res = (HttpWebResponse)req.GetResponse(); handler.Invoke(res, res.StatusCode); } catch (Exception e) { e.AddErrorLog(); throw e; } finally { try { req?.Abort(); } catch (Exception e) { e.AddLog(typeof(HttpClientHelper)); } res?.Dispose(); } }
/// <summary> /// send request /// </summary> /// <param name="url"></param> /// <param name="data"></param> /// <param name="contentType"></param> /// <param name="method"></param> /// <param name="timeout_second"></param> /// <returns></returns> public static string Send(string url, byte[] data, string contentType, RequestMethodEnum method = RequestMethodEnum.POST, int?timeout_second = 30) { HttpWebRequest req = null; HttpWebResponse res = null; try { //连接到目标网页 req = (HttpWebRequest)WebRequest.Create(url); if (timeout_second != null) { req.Timeout = timeout_second.Value * 1000; } req.Method = GetMethod(method); if (ValidateHelper.IsPlumpString(contentType)) { req.ContentType = contentType; } if (ValidateHelper.IsPlumpList(data)) { req.ContentLength = data.Length; using (var stream = req.GetRequestStream()) { stream.Write(data, 0, data.Length); } } res = (HttpWebResponse)req.GetResponse(); using (var s = res.GetResponseStream()) { return(ConvertHelper.StreamToString(s)); } } catch (Exception e) { e.AddErrorLog(); throw e; } finally { try { req?.Abort(); } catch (Exception e) { e.AddLog(typeof(HttpClientHelper)); } res?.Dispose(); } }
public static void SendHttpRequest( string url, Dictionary <string, string> param, Dictionary <string, FileModel> files, List <Cookie> cookies, RequestMethodEnum method, int timeout_second, VoidFunc <HttpResponseMessage> handler) { var t = SendHttpRequestAsync(url, param, files, cookies, method, timeout_second, handler); AsyncHelper.RunSync(() => t); }
/// <summary> /// send request /// </summary> public static string Send(string url, byte[] data = null, string contentType = null, RequestMethodEnum method = RequestMethodEnum.POST, int?timeout_second = 30, int[] ensure_http_code = null) { var response_data = string.Empty; Action <HttpWebResponse, HttpStatusCode> callback = (res, code) => { using (var s = res.GetResponseStream()) { response_data = ConvertHelper.StreamToString(s); } }; TimeSpan?to = null; if (timeout_second != null) { to = TimeSpan.FromSeconds(timeout_second.Value); } SendCore(url, callback, data: data, contentType: contentType, method: method, timeout: to, ensure_http_code: ensure_http_code); return(response_data); }
private static string GetMethod(RequestMethodEnum m) { return(m.ToString()); }
public static async Task SendHttpRequestAsync( string url, Dictionary <string, string> param, Dictionary <string, FileModel> files, List <Cookie> cookies, RequestMethodEnum method, int timeout_second, VoidFunc <HttpResponseMessage> handler) { var u = new Uri(url); using (var httpHandler = new HttpClientHandler() { UseCookies = false }) { //创建cookie if (ValidateHelper.IsPlumpList(cookies)) { var cookieContainer = new System.Net.CookieContainer(); cookies.ForEach(x => { cookieContainer.Add(u, x); }); httpHandler.UseCookies = true; httpHandler.CookieContainer = cookieContainer; } using (var client = new HttpClient(httpHandler)) { client.DefaultRequestHeaders.Add("UserAgent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"); //发送X_FORWARDED_FOR头(若是用取源IP的方式,可以用这个来造假IP,对日志的记录无效) client.DefaultRequestHeaders.Add("X_FORWARDED_FOR", "101.0.0.11"); client.Timeout = TimeSpan.FromSeconds(timeout_second); HttpResponseMessage response = null; if (method == RequestMethodEnum.POST) { //使用MultipartFormDataContent请参考邮件里的记录 //拼url传参 //using (var urlContent = new FormUrlEncodedContent(param)) { } //form提交 using (var formContent = new MultipartFormDataContent()) { if (ValidateHelper.IsPlumpDict(param)) { param = param.NotNull(); foreach (var key in param.Keys) { formContent.Add(new StringContent(param[key]), key); } } if (ValidateHelper.IsPlumpDict(files)) { foreach (var key in files.Keys) { formContent.Add(CreateFileContent(files[key], key), key); } } response = await client.PostAsync(u, formContent); } } if (method == RequestMethodEnum.GET) { response = await client.GetAsync(u); } if (method == RequestMethodEnum.PUT) { throw new NotImplementedException(); //response = await client.PutAsync(u, null); } if (method == RequestMethodEnum.DELETE) { response = await client.DeleteAsync(u); } if (response == null) { throw new Exception("返回空"); } using (response) { handler.Invoke(response); } } } }
public static string GetMethodString(this RequestMethodEnum m) => m.ToString();
/// <summary> /// 根据requestMethod,执行相应的方法,并从param中取参数。 /// </summary> /// <param name="param">方法执行所需要的参数列表</param> /// <param name="requestMethod">要执行的方法</param> /// <returns>返回序列化后的字符串</returns> public static string Execute(List <object> param, RequestMethodEnum requestMethod) { switch (requestMethod) { case RequestMethodEnum.CancelBespeakLog: { int bespeakId = (int)param[0]; string remark = (string)param[1]; return(appService.CancelBespeakLog(bespeakId, remark)); } case RequestMethodEnum.ChangeSeat: { string cardNo = (string)param[0]; string seatNo = (string)param[1]; string readingRoom = (string)param[2]; return(appService.ChangeSeat(cardNo, seatNo, readingRoom)); } case RequestMethodEnum.FreeSeat: { string cardNo = (string)param[0]; return(appService.FreeSeat(cardNo)); } case RequestMethodEnum.GetAllRoomSeatUsedInfo: return(appService.GetAllRoomSeatUsedInfo()); case RequestMethodEnum.GetOpenBespeakRooms: { string strDate = (string)param[0]; return(appService.GetOpenBespeakRooms(strDate)); } case RequestMethodEnum.GetReaderActualTimeRecord: { string cardNo = (string)param[0]; string getItemsParameter = (string)param[1]; return(appService.GetReaderActualTimeRecord(cardNo, getItemsParameter)); } case RequestMethodEnum.GetReaderBespeakRecord: { string cardNo = (string)param[0]; int pageIndex = (int)param[1]; int pageSize = (int)param[2]; return(appService.GetReaderBespeakRecord(cardNo, pageIndex, pageSize)); } case RequestMethodEnum.GetReaderBlacklistRecord: { string cardNo = (string)param[0]; int pageIndex = (int)param[1]; int pageSize = (int)param[2]; return(appService.GetReaderBlacklistRecord(cardNo, pageIndex, pageSize)); } case RequestMethodEnum.GetReaderChooseSeatRecord: { string cardNo = (string)param[0]; int pageIndex = (int)param[1]; int pageSize = (int)param[2]; return(appService.GetReaderChooseSeatRecord(cardNo, pageIndex, pageSize)); } case RequestMethodEnum.GetReaderAccount: { string cardNum = (string)param[0]; string password = (string)param[1]; return(appService.GetReaderAccount(cardNum, password)); } case RequestMethodEnum.GetScanCodeSeatInfo: { string scanResult = (string)param[0]; string cardNo = (string)param[1]; return(appService.GetScanCodeSeatInfo(scanResult, cardNo)); } case RequestMethodEnum.GetSeatsBespeakInfoByRoomNum: { string roomNum = (string)param[0]; string date = (string)param[1]; return(appService.GetSeatsBespeakInfoByRoomNum(roomNum, date)); } case RequestMethodEnum.GetViolateDiscipline: { string cardNo = (string)param[0]; int pageIndex = (int)param[1]; int pageSize = (int)param[2]; return(appService.GetViolateDiscipline(cardNo, pageIndex, pageSize)); } case RequestMethodEnum.ShortLeave: { string cardNo = (string)param[0]; return(appService.ShortLeave(cardNo)); } case RequestMethodEnum.SubmitBespeakInfo: { string cardNo = (string)param[0]; string roomNum = (string)param[1]; string seatNum = (string)param[2]; string bespeakDatetime = (string)param[3]; string remark = (string)param[4]; return(appService.SubmitBespeakInfo(cardNo, roomNum, seatNum, bespeakDatetime, remark)); } case RequestMethodEnum.SubmitBespeakInfoCustomTime: { string cardNo = (string)param[0]; string roomNum = (string)param[1]; string seatNum = (string)param[2]; string bespeakDatetime = (string)param[3]; string remark = (string)param[4]; return(appService.SubmitBespeakInfoCustomTime(cardNo, roomNum, seatNum, bespeakDatetime, remark)); } case RequestMethodEnum.GetReaderNotice: { string cardNo = (string)param[0]; int pageIndex = (int)param[1]; int pageSize = (int)param[2]; return(appService.GetReaderNoticeList(cardNo, pageIndex, pageSize)); } case RequestMethodEnum.GetReaderSeatState: { string cardNo = (string)param[0]; return(appService.GetReaderSeatState(cardNo)); } default: return(null); } }
private async Task <HttpResponseMessage> SendRequest(CodeActivityContext context, HttpClient client, RequestMethodEnum requestMethod, StringContent content) { switch (requestMethod) { case RequestMethodEnum.GET: return(await client.GetAsync(RequestUrl.Get <string>(context))); case RequestMethodEnum.PATCH: return(await client.PatchAsync(RequestUrl.Get <string>(context), content)); case RequestMethodEnum.PUT: return(await client.PutAsync(RequestUrl.Get <string>(context), content)); case RequestMethodEnum.DELETE: return(await client.DeleteAsync(RequestUrl.Get <string>(context))); case RequestMethodEnum.POST: return(await client.PostAsync(RequestUrl.Get <string>(context), content)); default: throw new InvalidPluginExecutionException("The Request Method supplied is not supported. Try using GET, PATCH, PUT, DELETE or POST"); } }
public YandexSearchQuery(string query, int page, APICredentials APICred, YandexRegion region, RequestMethodEnum? requestMethod) { if (!String.IsNullOrEmpty(query.Trim())) { _query = query; if (region != null) //Если запрос с регионом { _region = region; } else { _region = new YandexRegion(); _region.Key = -1; _region.StringName = "Региональная привязка отсутсвует"; } } _page = page; _APICredentials = APICred; if (requestMethod != null) { _requestMethod = (RequestMethodEnum)requestMethod; } else { //По умолчанию отправляем запрос POST _requestMethod = RequestMethodEnum.POST; } if (_requestMethod == RequestMethodEnum.POST) { this._responseStream = ResponseStreamPOST(); } else if (_requestMethod == RequestMethodEnum.GET) { this._responseStream = ResponseStreamGET(); } }
public static void SendCore(string url, Action <HttpWebResponse, HttpStatusCode> handler, List <Cookie> cookies = null, byte[] data = null, string contentType = null, RequestMethodEnum method = RequestMethodEnum.POST, TimeSpan?timeout = null, int[] ensure_http_code = null) { HttpWebRequest req = null; HttpWebResponse res = null; try { //连接到目标网页 req = (HttpWebRequest)WebRequest.Create(url); //timeout timeout = timeout ?? TimeSpan.FromSeconds(30); req.Timeout = (int)timeout.Value.TotalMilliseconds; //method req.Method = method.GetMethodString(); //cookie if (ValidateHelper.IsPlumpList(cookies)) { req.CookieContainer = new CookieContainer(); foreach (var c in cookies) { req.CookieContainer.Add(c); } } //content type if (ValidateHelper.IsPlumpString(contentType)) { req.ContentType = contentType; } //data if (ValidateHelper.IsPlumpList(data)) { req.ContentLength = data.Length; using (var stream = req.GetRequestStream()) { stream.Write(data, 0, data.Length); } } //response res = (HttpWebResponse)req.GetResponse(); //ensure http status if (ValidateHelper.IsPlumpList(ensure_http_code) && !ensure_http_code.Contains((int)res.StatusCode)) { throw new Exception($"{url}请求的返回码:{(int)res.StatusCode}不在允许的范围内:{",".Join_(ensure_http_code)}"); } //callback handler.Invoke(res, res.StatusCode); } finally { try { req?.Abort(); } catch (Exception e) { e.AddErrorLog(); } res?.Dispose(); } }