//각종 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) { } }
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)); } } }
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)); } } }
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); }
//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); } }