Exemplo n.º 1
0
        /// <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();
            }
        }
Exemplo n.º 2
0
        /// <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();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
 private static string GetMethod(RequestMethodEnum m)
 {
     return(m.ToString());
 }
Exemplo n.º 6
0
        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);
                    }
                }
            }
        }
Exemplo n.º 7
0
 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);
            }
        }
Exemplo n.º 9
0
        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();

            }
        }
Exemplo n.º 11
0
        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();
            }
        }