Example #1
0
        ///<summary>Checks whether a specified string is a valid HTTP query string.</summary>
        ///<param name="Query">The query to check.</param>
        ///<returns>True if the specified string is a valid HTTP query, false otherwise.</returns>
        private bool IsValidQuery(string Query)
        {
            int index = Query.IndexOf("\r\n\r\n");

            if (index == -1)
            {
                return(false);
            }
            HeaderFields = ParseQuery(Query);
            if (HttpRequestType.ToUpper().Equals("POST"))
            {
                try
                {
                    int length = int.Parse((string)HeaderFields["Content-Length"]);
                    return(Query.Length >= index + 6 + length);
                }
                catch
                {
                    SendBadRequest();
                    return(true);
                }
            }
            else
            {
                return(true);
            }
        }
Example #2
0
 public HttpCommand(uint id, HttpRequestType type, string url, string body)
 {
     Id   = id;
     Type = type;
     Url  = url;
     Body = body;
 }
Example #3
0
        public static async Task <JObject> ProcessRequests(String url, HttpRequestType requestType, JsonContent Data = null)
        {
            JObject json   = null;
            var     client = ClientHelper.GetClient();

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            switch (requestType)
            {
            case HttpRequestType.POST:
            {
                var stringTask = client.PostAsync(url, Data);
                var response   = await stringTask;
                if (response.IsSuccessStatusCode)
                {
                    Console.WriteLine("\nProcess succeed");
                }
                else
                {
                    Console.WriteLine("Something went wrong :(\n" + response.ToString());
                }
                break;
            }

            case HttpRequestType.GET:
            {
                var stringTask = client.GetStringAsync(url);
                var response   = await stringTask;
                json = JObject.Parse(response.ToString());
                break;
            }
            }
            return(json);
        }
Example #4
0
        public override Task <HttpResponseMessage> ExecuteAsync(HttpRequestType requestType, Uri uri = null, string relativeUri = null, string content = null, int waitMillis = 0, bool bAddAuthorizationHeader = true)
        {
            // Ensure we have exactly one usable Uri
            if (string.IsNullOrEmpty(relativeUri) && uri == null)
            {
                throw new OktaException("Cannot execute an Http request without a Uri");
            }

            if (!string.IsNullOrEmpty(relativeUri) && uri != null)
            {
                throw new OktaException("Http request is ambiguous: cannot determine whether to execute " + uri + " or " + relativeUri);
            }

            try
            {
                // Wait
                Utils.Sleep(waitMillis);

                // Handle GETs
                if (requestType == HttpRequestType.GET)
                {
                    return(uri != null?this.httpClient.GetAsync(uri) : this.httpClient.GetAsync(relativeUri));
                }

                // Handle POSTs
                if (requestType == HttpRequestType.POST)
                {
                    content = content ?? string.Empty;
                    if (!bAddAuthorizationHeader)
                    {
                        httpClient.DefaultRequestHeaders.Remove("Authorization");
                    }
                    return(uri != null?this.httpClient.PostAsync(uri, new StringContent(content, Encoding.UTF8, "application/json"))
                               : this.httpClient.PostAsync(relativeUri, new StringContent(content, Encoding.UTF8, "application/json")));
                }

                // Handle PUTs
                if (requestType == HttpRequestType.PUT)
                {
                    content = content ?? string.Empty;
                    return(uri != null?this.httpClient.PutAsync(uri, new StringContent(content, Encoding.UTF8, "application/json")) : this.httpClient.PutAsync(relativeUri, new StringContent(content, Encoding.UTF8, "application/json")));
                }

                // Handle DELETEs
                if (requestType == HttpRequestType.DELETE)
                {
                    return(uri != null?this.httpClient.DeleteAsync(uri) : this.httpClient.DeleteAsync(relativeUri));
                }

                throw new OktaException("The " + requestType + " http verb is not yet supported");
            }
            catch (OktaException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new OktaException("Error making an HTTP request: " + e.Message, e);
            }
        }
        public NotificationRequester(int noticeName, string keyInUrlMrg, HttpRequestType requestType = HttpRequestType.Post) : base(keyInUrlMrg, requestType)
        {
            noticeName.Add(OnResponserInit);
            NotificationResponseIniter initer = ResponserIniter as NotificationResponseIniter;

            initer.Init(noticeName, true);
        }
Example #6
0
 public HttpRequest(RawRequest request)
     : base(request)
 {
     type = HttpRequestType.HttpPage;
     Requests = new Dictionary<string, string>();
     UrlParameters = new Dictionary<string, string>();
 }
Example #7
0
        //private readonly JavaScriptSerializer serializer = new JavaScriptSerializer();

        /// <summary>
        /// Calls a http webservice, only supports GET and POST as of now
        /// </summary>
        /// <typeparam name="T">Type of response</typeparam>
        /// <param name="url">Url of service</param>
        /// <param name="httpRequestType">GET or POST</param>
        /// <param name="requestObj">The request object</param>
        /// <returns></returns>
        public static T RestRequest <T>(string url, HttpRequestType httpRequestType, object requestObj = null)
        {
            HttpWebRequest request;

            if (httpRequestType == HttpRequestType.GET && requestObj == null)
            {
                request = GetGetRequest(url);
            }
            else if (httpRequestType == HttpRequestType.POST)
            {
                request = GetPostRequest(url, requestObj);
            }
            else if (httpRequestType == HttpRequestType.GET)
            {
                request = GetGetRequest(url, requestObj);
            }
            else
            {
                throw new ApplicationException("httpRequest type is unknown");
            }
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream receiveStream = response.GetResponseStream();

            StreamReader readStream   = new StreamReader(receiveStream, Encoding.UTF8);
            string       responseText = readStream.ReadToEnd();

            response.Close();
            readStream.Close();

            T serialized = JsonConvert.DeserializeObject <T>(responseText);

            return(serialized);
        }
Example #8
0
        public String makeRequest(HttpRequestType type, String request)
        {
            if (type != HttpRequestType.GET && type != HttpRequestType.DELETE)
            {
                throw new ArgumentException("Must be a GET or DELETE");
            }
            WebRequest wr = WebRequest.Create(String.Concat(this.BaseUri, request));
            wr.Method = Enum.GetName(typeof(HttpRequestType), type);
               // HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

            using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
            {
                using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        String responseBody = rdr.ReadToEnd();
                        return responseBody;
                    }
                    else
                    {
                        return response.StatusCode.ToString();
                        // TODO - handle error
                    }

                }
            }
        }
Example #9
0
        public String postOrPut(HttpRequestType type, String body)
        {
            if (type != HttpRequestType.POST && type != HttpRequestType.PUT)
            {
                throw new ArgumentException("Must be a POST or PUT");
            }
            WebRequest wr = WebRequest.Create(this.BaseUri);
            wr.Method = Enum.GetName(typeof(HttpRequestType), type);
            byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(body);
            wr.ContentLength = bytesToSend.Length;
            wr.ContentType = "application/x-www-form-urlencoded";

            using (Stream writer = wr.GetRequestStream())
            {
                writer.Write(bytesToSend, 0, bytesToSend.Length);
            }

            using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
            {
                using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        String responseBody = rdr.ReadToEnd();
                        return responseBody;
                    }
                    else
                    {
                        return response.StatusCode.ToString();
                        // TODO - handle error
                    }

                }
            }
        }
Example #10
0
        public String postOrPut(HttpRequestType type, String body)
        {
            if (type != HttpRequestType.POST && type != HttpRequestType.PUT)
            {
                throw new ArgumentException("Must be a POST or PUT");
            }
            WebRequest wr = WebRequest.Create(this.BaseUri);

            wr.Method = Enum.GetName(typeof(HttpRequestType), type);
            byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(body);
            wr.ContentLength = bytesToSend.Length;
            wr.ContentType   = "application/x-www-form-urlencoded";

            using (Stream writer = wr.GetRequestStream())
            {
                writer.Write(bytesToSend, 0, bytesToSend.Length);
            }

            using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
            {
                using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        String responseBody = rdr.ReadToEnd();
                        return(responseBody);
                    }
                    else
                    {
                        return(response.StatusCode.ToString());
                        // TODO - handle error
                    }
                }
            }
        }
Example #11
0
        public String makeRequest(HttpRequestType type, String request)
        {
            if (type != HttpRequestType.GET && type != HttpRequestType.DELETE)
            {
                throw new ArgumentException("Must be a GET or DELETE");
            }
            WebRequest wr = WebRequest.Create(String.Concat(this.BaseUri, request));

            wr.Method = Enum.GetName(typeof(HttpRequestType), type);
            // HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

            using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
            {
                using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        String responseBody = rdr.ReadToEnd();
                        return(responseBody);
                    }
                    else
                    {
                        return(response.StatusCode.ToString());
                        // TODO - handle error
                    }
                }
            }
        }
Example #12
0
        private void ProcessQuery(string query)
        {
            HeaderFields = ParseQuery(query);
            if (HeaderFields == null || !HeaderFields.ContainsKey("Host"))
            {
                SendBadRequest();
                return;
            }
            int    port;
            string host;
            int    ret;

            if (HttpRequestType.ToUpper().Equals("CONNECT"))
            { //HTTPS
                ret = RequestedPath.IndexOf(":", StringComparison.Ordinal);
                if (ret >= 0)
                {
                    host = RequestedPath.Substring(0, ret);
                    port = RequestedPath.Length > ret + 1 ? int.Parse(RequestedPath.Substring(ret + 1)) : 443;
                }
                else
                {
                    host = RequestedPath;
                    port = 443;
                }
            }
            else
            { //HTTP
                ret = HeaderFields["Host"].IndexOf(":", StringComparison.Ordinal);
                if (ret > 0)
                {
                    host = HeaderFields["Host"].Substring(0, ret);
                    port = int.Parse(HeaderFields["Host"].Substring(ret + 1));
                }
                else
                {
                    host = HeaderFields["Host"];
                    port = 80;
                }
                if (HttpRequestType.ToUpper().Equals("POST"))
                {
                    var index = query.IndexOf("\r\n\r\n", StringComparison.Ordinal);
                    _httpPost = query.Substring(index + 4);
                }
            }
            try
            {
                var destinationEndPoint = new IPEndPoint(Dns.GetHostEntry(host).AddressList[0], port);
                DestinationSocket = new Socket(destinationEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                if (HeaderFields.ContainsKey("Proxy-Connection") && HeaderFields["Proxy-Connection"].ToLower().Equals("keep-alive"))
                {
                    DestinationSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 1);
                }
                DestinationSocket.BeginConnect(destinationEndPoint, OnConnected, DestinationSocket);
            }
            catch
            {
                SendBadRequest();
            }
        }
Example #13
0
        public static string RestRequestWithStringResponse(string url, HttpRequestType httpRequestType, object requestObj)
        {
            HttpWebRequest request;

            if (httpRequestType == HttpRequestType.GET && requestObj == null)
            {
                request = GetGetRequest(url);
            }
            else if (httpRequestType == HttpRequestType.POST)
            {
                request = GetPostRequest(url, requestObj);
            }
            else if (httpRequestType == HttpRequestType.GET)
            {
                request = GetGetRequest(url, requestObj);
            }
            else
            {
                throw new ApplicationException("httpRequest type is unknown");
            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream receiveStream = response.GetResponseStream();

            StreamReader readStream   = new StreamReader(receiveStream, Encoding.UTF8);
            string       responseText = readStream.ReadToEnd();

            response.Close();
            readStream.Close();

            return(responseText);
        }
Example #14
0
        public IEnumerable <T> Requests(HttpRequestType requestType, string url, object param = null, string token = null)
        {
            try
            {
                var result         = new List <T>();
                var ResponseString = ProcessRequest(requestType, url, param, token);

                var jsonObject = (JObject)JsonConvert.DeserializeObject(ResponseString);

                if (jsonObject["Results"] != null)
                {
                    result = JsonConvert.DeserializeObject <List <T> >(jsonObject["Results"].ToString());
                }
                else
                {
                    result = JsonConvert.DeserializeObject <List <T> >(jsonObject.ToString());
                }

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void OnConnected(IAsyncResult ar)
        {
            try
            {
                if (DestinationSocket == null)
                {
                    return;
                }

                string str;
                DestinationSocket.EndConnect(ar);
                if (HttpRequestType.ToUpper().Equals("CONNECT"))
                {
                    if (ClientSocket != null)
                    {
                        str = HttpVersion + " 200 Connection established\r\n\r\n";
                        ClientSocket.BeginSend(Encoding.ASCII.GetBytes(str), 0, str.Length, SocketFlags.None, OnOkSent,
                                               ClientSocket);
                    }
                }
                else
                {
                    str = RebuildQuery();
                    DestinationSocket.BeginSend(Encoding.ASCII.GetBytes(str), 0, str.Length, SocketFlags.None,
                                                OnQuerySent, DestinationSocket);
                }
            }
            catch
            {
                Dispose();
            }
        }
Example #16
0
        private string ProcessRequest(HttpRequestType requestType, string url, object param = null, string token = null)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            if (token != null)
            {
                httpWebRequest.Headers.Add("Authorization", "Bearer " + token);
            }


            if (requestType != HttpRequestType.GET)
            {
                httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
                httpWebRequest.ContentType            = "application/json";
                httpWebRequest.Method = requestType.GetString();

                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    streamWriter.Write(JsonConvert.SerializeObject(param));
                }
            }

            string ResponseString = "";
            var    httpResponse   = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                ResponseString = streamReader.ReadToEnd();
            }

            return(ResponseString);
        }
Example #17
0
        public static string GetString(this HttpRequestType requestType)
        {
            string result = string.Empty;

            switch (requestType)
            {
            case HttpRequestType.GET:
                result = Global.Method.GET;
                break;

            case HttpRequestType.POST:
                result = Global.Method.POST;
                break;

            case HttpRequestType.PUT:
                result = Global.Method.PUT;
                break;

            case HttpRequestType.DELETE:
                result = Global.Method.DELETE;
                break;

            default:
                break;
            }

            return(result);
        }
Example #18
0
        private void OnConnected(IAsyncResult ar)
        {
            try
            {
                DestinationSocket.EndConnect(ar);
                string rq;
                if (HttpRequestType.ToUpper().Equals("CONNECT"))
                { //HTTPS
                    rq = HttpVersion + " 200 Connection established\r\nProxy-Agent: DoctorProxy Proxy Server\r\n\r\n";
                    ClientSocket.BeginSend(Encoding.ASCII.GetBytes(rq), 0, rq.Length, SocketFlags.None, new AsyncCallback(this.OnOkSent), ClientSocket);
                }
                else
                { //Normal HTTP
                    rq = RebuildQuery();

                    //اینجا لاگ کن
                    DestinationSocket.BeginSend(Encoding.ASCII.GetBytes(rq), 0, rq.Length, SocketFlags.None, new AsyncCallback(this.OnQuerySent), DestinationSocket);
                }
            }
            catch (Exception ex)
            {
                Log.Write(MethodInfo.GetCurrentMethod(), ex);
                Dispose();
            }
        }
Example #19
0
        private UnityWebRequest CreateWebReqeust(HttpRequestType requestType, ref string requestURL, ref HTTPParam data, int timeOut)
        {
            UnityWebRequest engine = default;

            switch (requestType)
            {
            case HttpRequestType.Get:

                string GETParam = HttpUtility.GetOriginalDataString(data);
                engine = CreateRequesterGET(ref requestURL, ref GETParam);
                break;

            case HttpRequestType.Post:

                InitURLRequestBasic();
                engine = CreateRequesterPOST(ref requestURL, ref data);
                break;
            }
            if (engine != default)
            {
                engine.timeout = timeOut;
            }
            else
            {
            }
            return(engine);
        }
Example #20
0
        private UnityWebRequest CreateWebReqeust(HttpRequestType requestType, ref string requestURL, ref JsonData data, int timeOut)
        {
            UnityWebRequest engine = default;

            switch (requestType)
            {
            case HttpRequestType.Get:

                string GETParam = JsonMapper.ToJson(data);
                engine = CreateRequesterGET(ref requestURL, ref GETParam);
                break;

            case HttpRequestType.Post:
                InitURLRequestBasic();
                engine = CreateRequesterPOSTByJSON(ref requestURL, ref data);
                break;
            }
            if (engine != default)
            {
                engine.timeout = timeOut;
            }
            else
            {
            }
            return(engine);
        }
Example #21
0
        /// <summary>
        /// 发送以Json对象为参数的请求
        /// </summary>
        /// <param name="requestType"></param>
        /// <param name="requestURL"></param>
        /// <param name="successResponse"></param>
        /// <param name="errorResponse"></param>
        /// <param name="data"></param>
        /// <param name="timeOut"></param>
        /// <param name="showWaiting"></param>
        /// <param name="callback"></param>
        /// <param name="apiValue"></param>
        public void JsonDataRequest(
            HttpRequestType requestType, string requestURL, OnSuccess successResponse, OnError errorResponse, JsonData data = default,
            int timeOut = 10, bool showWaiting = true, OnSuccess callback = default, string apiValue = "")
        {
            HTTPJsonRequestInfo info = new HTTPJsonRequestInfo
            {
                requestType     = requestType,
                requestURL      = requestURL,
                successResponse = successResponse,
                errorResponse   = errorResponse,
                data            = data,
                timeOut         = timeOut,
                showWaiting     = showWaiting,
                callback        = callback,
                headerAPI       = apiValue
            };

            if (showWaiting)
            {
                mRequestInfoList.Add(info);
            }
            else
            {
                mRequestInfosNoWaiting.Add(info);
            }
        }
Example #22
0
        private IEnumerator SendRequest(HttpRequestType requestType, string requestURL, OnSuccess successResponse, OnErrorResponse errorResponse, HTTPParam data = default, int timeOut = 10, string headerAPIValue = "")
        {
            string   debug     = string.Empty;
            DateTime debugTime = DateTime.UtcNow;

            LogBeforeSend(ref debug, ref requestType, ref requestURL, ref data);

            UnityWebRequest engine = CreateWebReqeust(requestType, ref requestURL, ref data, timeOut);

            InitAndSetHeaderAPI(ref engine, headerAPIValue);//标记HTTP请求头部数据,区分发送同一个请求的不同业务

            mIsNetWorking = true;
            yield return(engine.SendWebRequest());

            mIsNetWorking = false;

            LogTimeUsed(ref debug, ref engine, debugTime);

            string headerAPI = engine.GetRequestHeader("api");

            CheckRequestError(ref engine, ref debug, out int errorStatu);

            Responsed(errorStatu, ref engine, successResponse, errorResponse, ref data, ref requestURL, ref debug);

            engine.Dispose();
            RemoveHeaderAPI(ref headerAPI);
        }
        // TODO: simplify timeout for Unity 5.6+
        // https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest-timeout.html
        public HTTPRequest(string url, Action <Response> callback, int timeout, HttpRequestType requestType = HttpRequestType.Get)
        {
            IsCompleted  = false;
            _requestType = requestType;

            switch (_requestType)
            {
            case HttpRequestType.Get:
                _request = UnityWebRequest.Get(url);
                break;

            case HttpRequestType.Head:
                _request = UnityWebRequest.Head(url);
                break;

            default:
                _request = UnityWebRequest.Get(url);
                break;
            }

            _request.timeout = timeout;
            _callback        = callback;

#if UNITY_EDITOR
            if (!EditorApplication.isPlaying)
            {
                Runnable.EnableRunnableInEditor();
            }
#endif
            Runnable.Run(DoRequest());
        }
Example #24
0
        /// <summary>
        /// HTTP请求(异步)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="type">请求类型</param>
        /// <param name="url">请求地址</param>
        /// <param name="requestParas">请求参数(json格式)</param>
        /// <param name="timeout">请求超时时间</param>
        /// <param name="headerDic">请求头</param>
        /// <param name="cookie">请求时携带的cookie</param>
        /// <param name="referrer">伪造http_referer</param>
        /// <param name="ensureSuccess">如果 HTTP 响应的 System.Net.Http.HttpResponseMessage.IsSuccessStatusCode 属性为 false,是否引发异常。</param>
        /// <param name="httpRequestResultType"></param>
        /// <returns></returns>
        public static async Task <T> RequestAsync <T>(HttpRequestType type, string url, string requestParas = null, TimeSpan?timeout = null, IDictionary <string, string> headerDic = null, string cookie = null, string referrer = null, bool ensureSuccess = true, HttpRequestResultType httpRequestResultType = HttpRequestResultType.Json) where T : class, new()
        {
            if (string.IsNullOrWhiteSpace(url))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(url));
            }

            var requestResult = await RequestAsync(HttpRequestType.Post, url, requestParas, timeout, headerDic, cookie, referrer, ensureSuccess);

            if (string.IsNullOrWhiteSpace(requestResult))
            {
                return(default(T));
            }

            T result;

            switch (httpRequestResultType)
            {
            case HttpRequestResultType.Json:
                result = JsonHelper.Deserialize <T>(requestResult);
                break;

            case HttpRequestResultType.Xml:
                result = XmlSerializer <T> .Instance.Deserialize(requestResult);

                break;

            default:
                throw new Exception($"Unsupported HttpRequestResultType: {httpRequestResultType.ToString()}");
            }
            return(result);
        }
 protected HttpWebRequest CreateHttpWebRequest(string url, HttpRequestType requestType)
 {
     var request = (HttpWebRequest)WebRequest.Create(url);
     request.Method = requestType.ToString().ToUpper();
     request.UserAgent = _userAgent;
     request.KeepAlive = false;
     return request;
 }
Example #26
0
        /// <summary>
        /// 获取HTTP请求方法
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private static HttpMethod GetHttpMethod(HttpRequestType type)
        {
            if (!_requestTypeMapDic.ContainsKey(type))
            {
                throw new Exception($"Unsupported HttpRequestType: {type.ToString()}");
            }

            return(_requestTypeMapDic[type]);
        }
        protected HttpWebRequest CreateHttpWebRequest(string url, HttpRequestType requestType)
        {
            var request = (HttpWebRequest)WebRequest.Create(url);

            request.Method    = requestType.ToString().ToUpper();
            request.UserAgent = _userAgent;
            request.KeepAlive = false;
            return(request);
        }
        private bool IsValidQuery(string query)
        {
            if (String.IsNullOrEmpty(query))
            {
                return(false);
            }

            HeaderFields = ParseQuery(query);
            return(!HttpRequestType.ToUpper().Equals("POST") || !HeaderFields.ContainsKey("Content-Length"));
        }
Example #29
0
        private async Task <HttpResponseMessage> InternalRequestAsync(HttpRequestType httpRequestType, string requestUri, HttpContent httpContent, Dictionary <string, string> headers, string accessToken)
        {
            _appHttpClient.DefaultRequestHeaders.Clear();
            _appHttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(KnownMimeTypes.Json));

            if (headers != null)
            {
                foreach (var header in headers)
                {
                    _appHttpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                }
            }
            if (!string.IsNullOrEmpty(accessToken))
            {
                _appHttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            }

            var response = await _appHttpClient.RequestAsync(httpRequestType, requestUri, httpContent);

            var statusCode = (int)response.StatusCode;

            if (response.IsSuccessStatusCode)
            {
                if (statusCode == 204)
                {
                    throw new NoContentException("No content available.");
                }

                return(response);
            }
            else
            {
                if (statusCode == 400)
                {
                    var badRequestContract = await _httpMessageHelper.DecodeJsonResponseToObject <BadRequestResponseContract>(response);

                    if (badRequestContract != null && !string.IsNullOrEmpty(badRequestContract.Message))
                    {
                        throw new ServerMessageException(badRequestContract.Message);
                    }
                }

                var method = httpRequestType.ToString().ToUpper();
                if (statusCode >= 500)
                {
                    throw new ServerErrorException("Server is unavailable.", new ApiException($"{method} request failed for endpoint {requestUri}.", method, statusCode, response.ReasonPhrase));
                }
                else
                {
                    var errorData = await _httpMessageHelper.DecodeJsonResponseToObject <Dictionary <string, object> >(response);

                    throw new ApiException($"{method} request failed.", method, statusCode, response.ReasonPhrase, new ApiErrorData(errorData));
                }
            }
        }
 public HttpRequest(Uri uri, HttpRequestType httpRequestType, HttpContent httpContent = null, NameValueCollection parameters = null)
 {
     Uri             = uri;
     HttpRequestType = httpRequestType;
     HttpContent     = httpContent;
     if (parameters == null)
     {
         parameters = new NameValueCollection();
     }
     Parameters = parameters;
 }
Example #31
0
        private void BeforeRequest(ref HTTPJsonRequestInfo info, out string requestURL, out JsonData data, out UnityWebRequest engine, ref string debug)
        {
            data       = info.data;
            requestURL = info.requestURL;
            HttpRequestType requestType = info.requestType;

            LogBeforeSend(ref debug, ref requestType, ref requestURL, ref data);

            engine = CreateWebReqeust(requestType, ref requestURL, ref data, info.timeOut);

            InitAndSetHeaderAPI(ref engine, info.headerAPI);//标记HTTP请求头部数据,区分发送同一个请求的不同业务
        }
Example #32
0
 /// <summary>
 /// Creates and returns a <see cref="IRequestSender"/> that can send out a specified <see cref="HttpRequestType"/>.
 /// </summary>
 /// <param name="requestType">The request type a sender is needed for.</param>
 /// <returns>A new sender.</returns>
 public static IRequestSender ManufactureRequestSender(HttpRequestType requestType)
 {
     switch (requestType)
     {
         case HttpRequestType.GET:
             return new GetSender();
         case HttpRequestType.POST:
             return new PostSender();
         default:
             throw new NotImplementedException("There is no known sender implemented for the specified request type.");
     }
 }
Example #33
0
 public void CreateClientRequest(HttpRequestType requestType, string path)
 {
     ExecuteProtected(() =>
     {
         _requestSent        = false;
         var request         = CreateRequest();
         request.Url         = $"{_config.BaseUrl}/{path}";
         request.RequestType = requestType;
         request.Headers     = _headers;
         ValidateRequest(request);
         SendHttpRequestAsync(request).Wait();
     });
 }
Example #34
0
        public static TResult RESTfulRequest <TResult>(string url, HttpRequestType method, string authorization = null, string input = null, string contentType = null) where TResult : class, new()
        {
            var responseResult = RESTfulRequest(url, method, input, authorization, contentType);

            if (string.IsNullOrEmpty(responseResult))
            {
                return(null);
            }
            else
            {
                return(JsonConvert.DeserializeObject <TResult>(responseResult));
            }
        }
Example #35
0
 public static Bitmap GetImage(string carrier, string target, string refere, ref string cookie, HttpRequestType method, Encoding encoding, int timeOut, bool keepAlive, params string[] parameters)
 {
     return null;
 }
 private void btnSave_Click(object sender, System.EventArgs e)
 {
     if ( this.txtUrl.Text.Length == 0 )
     {
         this.errorProvider1.SetError(txtUrl, "A url is required.");
     }
     else
     {
         _selectedRequestType = (HttpRequestType)Enum.Parse(typeof(HttpRequestType),(string)combo.SelectedValue);
         this.DialogResult = DialogResult.OK;
         this.Close();
     }
 }
 /// <summary>
 /// Creates a new ResponseBuffer.
 /// </summary>
 /// <param name="requestType"> The request type of the response buffer.</param>
 public ResponseBuffer(HttpRequestType requestType)
 {
     this.RequestType = requestType;
 }
        /// <summary>
        /// Creates a new web request.
        /// </summary>
        /// <param name="httpRequestType"> The HTTP request type.</param>
        /// <param name="url"> The url.</param>
        /// <returns> A new web request.</returns>
        public static WebRequest Create(HttpRequestType httpRequestType, string url)
        {
            WebRequest request = null;

            switch ( httpRequestType )
            {
                case HttpRequestType.GET:
                    request = new GetWebRequest();
                    request.Url = url;
                    break;
                case HttpRequestType.POST:
                    request = new PostWebRequest();
                    request.Url = url;
                    break;
                case HttpRequestType.PUT:
                    request = new PutWebRequest();
                    request.Url = url;
                    break;
                case HttpRequestType.DELETE:
                    request = new DeleteWebRequest();
                    request.Url = url;
                    break;
                case HttpRequestType.SOAPHTTP:
                    request = new SoapHttpWebRequest();
                    request.Url = url;
                    break;
            }

            return request;
        }
Example #39
0
        public override HttpResponseMessage Execute(HttpRequestType requestType, Uri uri = null, string relativeUri = null, string content = null, int waitMillis = 0, int retryCount = 0)
        {
            try
            {
                var response = ExecuteAsync(requestType, uri, relativeUri, content, waitMillis).Result;

                // Handle any errors
                try
                {
                    OktaExceptionResolver.ParseHttpResponse(response);
                }

                // If it's a rate-limiting error
                catch (OktaRequestThrottlingException e)
                {
                    // If we haven't met the retry threshold
                    if (waitMillis < Constants.MaxThrottlingRetryMillis * 1000)
                    {
                        // If this is our second retry, then we need to scale back
                        if (retryCount > 0)
                        {
                            // Use exponential backoff
                            int millis = (int)Math.Pow(2, retryCount) * 1000;
                            return Execute(requestType, uri, relativeUri, content, millis, retryCount: retryCount++);
                        }
                        else
                        {
                            // Determine the number of milliseconds to wait using the header
                            IEnumerable<string> resetValues;
                            if (!response.Headers.TryGetValues("X-Rate-Limit-Reset", out resetValues))
                            {
                                // TODO: Log that we were unable to get the reset pageSize
                                throw e;
                            }
                            else
                            {
                                // Parse the string header to an int
                                var waitUntilString = resetValues.FirstOrDefault();
                                int waitUntilUnixTime;
                                if (!int.TryParse(waitUntilString, out waitUntilUnixTime))
                                {
                                    // TODO: Log that we were unable to convert the header
                                    throw e;
                                }
                                else
                                {
                                    // See how long until we hit that time
                                    var unixTime = (Int64)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds;
                                    var millisToWait = unixTime - ((Int64)waitUntilUnixTime * 1000);

                                    if (millisToWait > Int32.MaxValue)
                                    {
                                        // TODO: Log that we miscalculated the wait time
                                        throw e;
                                    }

                                    // Then attempt to send the request again
                                    return Execute(requestType, uri, relativeUri, content, (int)millisToWait, retryCount: 1);
                                }
                            }
                        }
                    }
                    else
                    {
                        // TODO: Log that there are too many requests queued
                        throw e;
                    }
                }

                // If there were no errors, just return
                return response;
            }
            catch (OktaException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new OktaException("Error making an HTTP request: " + e.Message, e);
            }
        }
Example #40
0
        public override Task<HttpResponseMessage> ExecuteAsync(HttpRequestType requestType, Uri uri = null, string relativeUri = null, string content = null, int waitMillis = 0)
        {
            // Ensure we have exactly one useable Uri
            if (String.IsNullOrEmpty(relativeUri) && uri == null)
            {
                throw new OktaException("Cannot execute an Http request without a Uri");
            }
            else if (!String.IsNullOrEmpty(relativeUri) && uri != null)
            {
                throw new OktaException("Http request is ambiguous: cannot determine whether to execute " + uri.ToString() + " or " + relativeUri);
            }

            try
            {
                // Wait
                Utils.Sleep(waitMillis);

                // Handle GETs
                if (requestType == HttpRequestType.GET)
                {
                    if (uri != null)
                    {
                        return httpClient.GetAsync(uri);
                    }
                    else
                    {
                        return httpClient.GetAsync(relativeUri);
                    }
                }

                // Handle POSTs
                else if (requestType == HttpRequestType.POST)
                {
                    content = content ?? "";
                    if (uri != null)
                    {
                        return httpClient.PostAsync(uri, new StringContent(content, Encoding.UTF8, "application/json"));
                    }
                    else
                    {
                        return httpClient.PostAsync(relativeUri, new StringContent(content, Encoding.UTF8, "application/json"));
                    }
                }

                // Handle PUTs
                else if (requestType == HttpRequestType.PUT)
                {
                    content = content ?? "";
                    if (uri != null)
                    {
                        return httpClient.PutAsync(uri, new StringContent(content, Encoding.UTF8, "application/json"));
                    }
                    else
                    {
                        return httpClient.PutAsync(relativeUri, new StringContent(content, Encoding.UTF8, "application/json"));
                    }
                }

                // Handle DELETEs
                else if (requestType == HttpRequestType.DELETE)
                {
                    if (uri != null)
                    {
                        return httpClient.DeleteAsync(uri);
                    }
                    else
                    {
                        return httpClient.DeleteAsync(relativeUri);
                    }
                }

                else
                {
                    throw new OktaException("The " + requestType.ToString() + " http verb is not yet supported");
                }
            }
            catch (OktaException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new OktaException("Error making an HTTP request: " + e.Message, e);
            }
        }
Example #41
0
 public static Bitmap GetImage(string carrier, string target, string refere, ref string cookie, HttpRequestType method)
 {
     return Http.GetImage(carrier, target, refere, ref cookie, method, Encoding.GetEncoding("gb2312"), 60, true, new string[0]);
 }
Example #42
0
 public static Stream GetStream(string target, string refere, ref string cookie, HttpRequestType method, Encoding encoding, int timeOut, bool keepAlive, params string[] parameters)
 {
     HttpWebResponse response = null;
     Stream responseStream = null;
     Stream returnStream = null;
     try
     {
         string ps = string.Empty;
         if (parameters != null && parameters.Length >= 1)
         {
             ps = string.Join("&", parameters);
         }
         byte[] bytes = encoding.GetBytes(ps);
         string urlPath = string.Empty;
         if (method == HttpRequestType.GET)
         {
             if (target.IndexOf("randCode.jsp?che=") < 0)
             {
                 urlPath = string.Format("{0}?{1}", target, ps);
             }
             else
             {
                 urlPath = target;
             }
         }
         else
         {
             urlPath = target;
         }
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPath);
         HttpRequestCachePolicy policy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
         request.CachePolicy = policy;
         request.Timeout = timeOut * 1000;
         request.KeepAlive = keepAlive;
         request.Method = method.ToString().ToUpper();
         bool isPost = request.Method.ToUpper() == "POST";
         if (isPost)
         {
             request.ContentType = "application/x-www-form-urlencoded";
             request.ContentLength = (long)bytes.Length;
         }
         request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
         request.Referer = refere;
         request.Headers.Add("cookie", cookie);
         request.Headers.Add("Cache-Control", "no-cache");
         request.Accept = "*/*";
         request.Credentials = CredentialCache.DefaultCredentials;
         if (isPost)
         {
             Stream requestStream = request.GetRequestStream();
             requestStream.Write(bytes, 0, bytes.Length);
             requestStream.Close();
         }
         response = (HttpWebResponse)request.GetResponse();
         responseStream = response.GetResponseStream();
         byte[] buffer = Http.StreamToBytes(responseStream);
         returnStream = new MemoryStream(buffer);
         string outCookie = response.Headers.Get("Set-Cookie");
         if (outCookie != null)
         {
             if (outCookie.Contains("JSESSIONID_3UB2B"))
             {
                 outCookie = outCookie.Replace(",JSESSIONID_3UB2B=", "; JSESSIONID_3UB2B=");
             }
             else
             {
                 if (outCookie.Contains("JSESSIONID_HOB2B"))
                 {
                     outCookie = outCookie.Replace(",JSESSIONID_HOB2B=", "; JSESSIONID_HOB2B=");
                 }
                 else
                 {
                     if (outCookie.Contains("JSESSIONID_BKB2B"))
                     {
                         outCookie = outCookie.Replace(",JSESSIONID_BKB2B=", "; JSESSIONID_BKB2B=");
                     }
                     else
                     {
                         if (outCookie.Contains("JSESSIONID_MFB2B"))
                         {
                             outCookie = outCookie.Replace(",JSESSIONID_MFB2B=", "; JSESSIONID_MFB2B=");
                         }
                         else
                         {
                             outCookie = outCookie.Replace(",JSESSIONID=", "; JSESSIONID=");
                         }
                     }
                 }
             }
             cookie = Http.SetCookies(cookie, outCookie);
         }
     }
     finally
     {
         if (response != null)
         {
             response.Close();
         }
         if (responseStream != null)
         {
             responseStream.Close();
         }
     }
     return returnStream;
 }
Example #43
0
        public static async Task<HttpContent> Request(string token, string url, object data, HttpRequestType type)
        {
            using (var client = new HttpClient())
            { 
                client.DefaultRequestHeaders.Add("X-API-TOKENAUTH", token);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                try
                {
                    HttpResponseMessage response = null;

                    switch (type)
                    {
                        case HttpRequestType.GET:
                            {
                                response = await client.GetAsync(url);
                                break;
                            }

                        case HttpRequestType.POST:
                            {
                                var param = JsonConvert.SerializeObject(data);
                                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");
                                response = await client.PostAsync(url, contentPost);
                                break;
                            }

                        case HttpRequestType.PUT:
                            {
                                var param = JsonConvert.SerializeObject(data);
                                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");
                                response = await client.PutAsync(url, contentPost);
                                break;
                            }

                        case HttpRequestType.DELETE:
                            {
                                response = await client.DeleteAsync(url);
                                break;
                            }


                        default:
                            throw new Exception("Unsupported Request Type");
                    } 
                    response.EnsureSuccessStatusCode();
                    return response.Content;
                }
                catch (HttpRequestException requestException)
                {
                    //if (requestException != null)
                    //{ 
                    //    //var statusCode = requestException.

                    //    var faceOffersError = new FaceOffersError();

                    //    throw new FaceOffersException(statusCode, faceOffersError, faceOffersError.Message);
                    //}

                    throw;
                }
            }
        }
Example #44
0
 public abstract Task<HttpResponseMessage> ExecuteAsync(HttpRequestType requestType, Uri uri = null, string relativeUri = null, string content = null, int waitMillis = 0);
Example #45
0
 public abstract HttpResponseMessage Execute(HttpRequestType requestType, Uri uri = null, string relativeUri = null, string content = null, int waitMillis = 0, int retryCount = 0);