Ejemplo n.º 1
0
        //각종 API요청용 함수
        public void RequestTwitter(BasePacket parameter)
        {
            if (parameter == null)
            {
                return;
            }

            HttpWebRequest req;

            if (parameter.method == "POST")
            {
                req = (HttpWebRequest)WebRequest.Create(parameter.url);
            }
            else//GET일 경우
            {
                req = (HttpWebRequest)WebRequest.Create(parameter.MethodGetUrl());
            }

            req.ContentType = "application/x-www-form-urlencoded;encoding=utf-8";
            req.Method      = parameter.method;
            req.Headers.Add("Authorization", OAuth.GetInstence().GetHeader(parameter));

            try
            {
                if (parameter.dicParams.Count > 0 && parameter.method == "POST")//POST일 때에만 Stream사용
                {
                    TwitterRequest twitterRequest = new TwitterRequest(req, parameter);
                    req.BeginGetRequestStream(new AsyncCallback(AsyncRequest), twitterRequest);
                }
                else
                {
                    TwitterRequest twitterRequest = new TwitterRequest(req, parameter);
                    req.BeginGetResponse(new AsyncCallback(AsyncResponse), twitterRequest);
                }
            }
            catch (WebException e)
            {
                using (Stream stream = e.Response?.GetResponseStream())
                {
                    if (stream == null)
                    {
                        return;
                    }
                    StreamReader srReadData = new StreamReader(stream, Encoding.Default);
                    string       log        = srReadData.ReadToEnd();
                    if (OnResponseError != null)
                    {
                        Application.Current.Dispatcher.BeginInvoke(OnResponseError, new object[] { log });
                    }
                }
            }
            catch (TimeoutException time)
            {
                //DalsaeInstence.ResponseTimeoutException(parameter);
            }
            catch (Exception e)
            {
            }
        }
Ejemplo n.º 2
0
        private async void SyncStreaming(BasePacket parameter)
        {
            while (true)
            {
                HttpWebRequest req;
                if (parameter.method == "POST")
                {
                    req = (HttpWebRequest)WebRequest.Create(parameter.url);
                }
                else                //GET일 경우
                {
                    req = (HttpWebRequest)WebRequest.Create(parameter.MethodGetUrl());
                }

                req.ContentType = "application/x-www-form-urlencoded;encoding=utf-8";
                req.Method      = parameter.method;
                req.Headers.Add("Authorization", OAuth.GetInstence().GetHeader(parameter));
                try
                {
                    using (WebResponse response = req.GetResponse())
                        using (stream = response.GetResponseStream())
                            using (streamRead = new StreamReader(stream))
                            {
                                string json;
                                if (OnChangedStatus != null)
                                {
                                    Application.Current.Dispatcher.BeginInvoke(OnChangedStatus, new object[] { true });
                                }
                                while ((json = streamRead.ReadLine()) != null)
                                {
                                    if (string.IsNullOrWhiteSpace(json))
                                    {
                                        continue;
                                    }
                                    ResponseJson(json);
                                }
                            }
                }
                catch (WebException e)
                {
                    App.SendException(e);
                    await Application.Current.Dispatcher.BeginInvoke(OnChangedStatus, new object[] { false });

                    //OnChangedStatus?.Invoke(false);
                }
                catch (Exception e)
                {
                    App.SendException(e);
                    await Application.Current.Dispatcher.BeginInvoke(OnChangedStatus, new object[] { false });

                    //OnChangedStatus?.Invoke(false);
                }
                finally
                {
                    await Application.Current.Dispatcher.BeginInvoke(OnChangedStatus, new object[] { false });

                    //OnChangedStatus?.Invoke(false);
                    await Task.Delay(TimeSpan.FromSeconds(10));
                }
            }
        }
Ejemplo n.º 3
0
        private async void SyncStreaming(BasePacket parameter)
        {
            bool isRunStreaming = true;
            int  retryCount     = 0;

            while (isRunStreaming)
            {
                HttpWebRequest req;
                if (parameter.method == "POST")
                {
                    req = (HttpWebRequest)WebRequest.Create(parameter.url);
                }
                else                //GET일 경우
                {
                    req = (HttpWebRequest)WebRequest.Create(parameter.MethodGetUrl());
                }
                try
                {
                    req.Proxy       = new WebProxy("localhost", 8811);
                    req.ContentType = "application/x-www-form-urlencoded;encoding=utf-8";
                    req.Method      = parameter.method;
                    req.Headers.Add("Authorization", OAuth.instence.GetHeader(parameter));
                    req.ContentLength = -1;
                }
                catch (Exception e)
                {
                    isRunStreaming = false;
                    retryCount++;
                    await Task.Delay(TimeSpan.FromSeconds(5));
                }
                try
                {
                    using (WebResponse response = req.GetResponse())
                        using (stream = response.GetResponseStream())
                            using (streamRead = new StreamReader(stream))
                            {
                                string json;
                                BridgeManager.instence.ConnectionChanged(true);
                                while ((json = streamRead.ReadLine()) != null)
                                {
                                    if (string.IsNullOrWhiteSpace(json))
                                    {
                                        continue;
                                    }
                                    BridgeManager.instence.ResponseJson(json);
                                }
                            }
                }
                catch (WebException e)
                {
                    BridgeManager.instence.ConnectionChanged(false);
                }
                catch (Exception e)
                {
                    BridgeManager.instence.ConnectionChanged(false);
                }
                finally
                {
                    BridgeManager.instence.ConnectionChanged(false);
                    await Task.Delay(TimeSpan.FromSeconds(5));
                }
            }
        }
Ejemplo n.º 4
0
        public string SyncRequest(BasePacket parameter)
        {
            string         ret = string.Empty;
            HttpWebRequest req;

            if (parameter.method == "POST")
            {
                req = (HttpWebRequest)WebRequest.Create(parameter.url);
            }
            else//GET일경우
            {
                req = (HttpWebRequest)WebRequest.Create(parameter.MethodGetUrl());
            }
            TwitterRequest request = new TwitterRequest(req, parameter);

            req.ContentType = "application/x-www-form-urlencoded;encoding=utf-8";
            req.Method      = parameter.method;
            req.Headers.Add("Authorization", OAuth.GetInstence().GetHeader(parameter));



            if (parameter.dicParams.Count > 0 && parameter.method == "POST")//POST일 때에만 Stream사용
            {
                //-----------------------------------------------------------------------------------
                //------------------------------------Send------------------------------------------
                //-----------------------------------------------------------------------------------
                try//send!
                {
                    Stream        stream = req.GetRequestStream();
                    StringBuilder sb     = new StringBuilder();

                    foreach (string item in parameter.dicParams.Keys)
                    {
                        if (parameter.dicParams[item] != "")
                        {
                            sb.Append(item);
                            sb.Append("=");
                            OAuth.GetInstence().CalcParamUri(sb, parameter.dicParams[item]);
                            sb.Append("&");
                        }
                    }
                    string sendData = sb.ToString();
                    byte[] bytes    = Encoding.UTF8.GetBytes(sendData);

                    stream.Write(bytes, 0, sendData.Length);
                    stream.Close();
                }
                catch (WebException e)
                {
                    using (Stream stream2 = e.Response?.GetResponseStream())
                    {
                        if (stream2 == null)
                        {
                            return(string.Empty);
                        }
                        StreamReader srReadData = new StreamReader(stream2, Encoding.Default);
                        string       log        = srReadData.ReadToEnd();
                        if (OnResponseError != null)
                        {
                            Application.Current.Dispatcher.BeginInvoke(OnResponseError, new object[] { log });
                        }
                    }
                }
                catch (Exception e)
                {
                    App.SendException(e);
                }
            }

            //-----------------------------------------------------------------------------------
            //-------------------------------Response------------------------------------------
            //-----------------------------------------------------------------------------------

            try//Response!!!
            {
                using (WebResponse response = req.GetResponse())
                    using (Stream stream = response.GetResponseStream())
                        using (StreamReader streamRead = new StreamReader(stream))
                            ret = streamRead.ReadToEnd();
            }
            catch (WebException e)
            {
                //using (Stream stream = e.Response.GetResponseStream())
                //{
                //	StreamReader srReadData = new StreamReader(stream, Encoding.Default);
                //	string log = srReadData.ReadToEnd();
                //	DalsaeInstence.ResponseError(log);
                //}
            }
            catch (Exception e)
            {
                App.SendException(e);
            }

            return(ret);
        }
Ejemplo n.º 5
0
        //public void DisconnectingUserStreaming()
        //{
        //	userStream.Disconnecting();
        //	userStream = new UserStream();
        //	DalsaeInstence.ConnectedStreaming(false);
        //}
        //public bool isConnectedUserStreaming() { return userStream.isConnectedStreaming; }

        //public void ConnectUserStream(object obj)
        //{
        //	if (obj == null) return;
        //	userStream.ConnectStreaming(obj as BasePacket);
        //}


        public void SyncRequest <TRes>(BasePacket packet, UIProperty property, Action <TRes, UIProperty> callback)
        {
            HttpWebRequest req;

            if (packet.method == "POST")
            {
                req = (HttpWebRequest)WebRequest.Create(packet.url);
            }
            else            //GET일경우
            {
                req = (HttpWebRequest)WebRequest.Create(packet.MethodGetUrl());
            }
            TwitterRequest request = new TwitterRequest(req, packet);

            req.ContentType = "application/x-www-form-urlencoded;encoding=utf-8";
            req.Method      = packet.method;
            req.Headers.Add("Authorization", OAuth.GetInstence().GetHeader(packet));



            if (packet.dicParams.Count > 0 && packet.method == "POST")            //POST일 때에만 Stream사용
            {
                //-----------------------------------------------------------------------------------
                //------------------------------------Send------------------------------------------
                //-----------------------------------------------------------------------------------
                try                //send!
                {
                    Send(packet, req);
                }
                catch (WebException e)
                {
                    using (Stream stream2 = e.Response?.GetResponseStream())
                    {
                        StreamReader srReadData = new StreamReader(stream2, Encoding.Default);
                        string       log        = srReadData.ReadToEnd();
                        if (OnResponseError != null)
                        {
                            Application.Current.Dispatcher.BeginInvoke(OnResponseError, new object[] { log });
                        }
                    }
                }
                catch (Exception e)
                {
                    OnResponseError?.Invoke(packet, null);
                }
            }

            try            //Response!!!
            {
                string json = Recv(packet, req);
                TRes   ret  = default(TRes);
                if (json?.Length > 0)
                {
                    ret = JsonConvert.DeserializeObject <TRes>(json);
                }
                if (callback != null)
                {
                    Application.Current.Dispatcher.BeginInvoke(callback, new object[] { ret, property });
                }
            }
            catch (WebException e)
            {
                if (e.Message.IndexOf("408") > -1)                //timeout시 재 전송
                {
                    Manager.APICallAgent.apiInstence.RequestSingleTweetPacket <TRes>(packet, property, callback);
                }
                else if (e.Response == null)
                {
                    App.SendException(e);
                }
                else
                {
                    //ClientAPIError error = null;
                    using (Stream stream = e.Response?.GetResponseStream())
                        using (StreamReader srReadData = new StreamReader(stream, Encoding.Default))
                        {
                            string log = srReadData.ReadToEnd();
                            if (string.IsNullOrEmpty(log) == false)
                            {
                                if (OnResponseError != null)
                                {
                                    Application.Current.Dispatcher.BeginInvoke(OnResponseError, new object[] { packet, log });
                                }
                            }
                        }
                }
            }
            catch (Exception e)
            {
                OnResponseError?.Invoke(packet, null);
                App.SendException(e);
            }
        }