예제 #1
0
파일: KORTClient.cs 프로젝트: jovijovi/kort
        public JObject Method(Functions funcName, JObject request, MethodCheckRequestParameters check)
        {
            if (!string.IsNullOrEmpty(Token)) request[FieldKeyword.Token] = Token;
            if (!string.IsNullOrEmpty(Language)) request[FieldKeyword.Language] = Language;
            JObject response = new JObject();
            if (ServerAddr==null|| request == null || (check != null && !check(request)))
            {
                response[FieldKeyword.Success] = false;
                response[FieldKeyword.CommonError] = ErrorNumber.CommonBadParameter.ToString();
                return response;
            }

            var webBinding = new WebHttpBinding();
            webBinding.AllowCookies = true;
            webBinding.MaxReceivedMessageSize = 1000 * 1024 * 1024;
            webBinding.ReaderQuotas.MaxStringContentLength = 1000 * 1024 * 1024;
            webBinding.SendTimeout = new TimeSpan(0, 500, 0);
            webBinding.ReceiveTimeout = new TimeSpan(0, 500, 0);

            using (var factory = new WebChannelFactory<IService>(webBinding, ServerAddr))
            {
                factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
                var session = factory.CreateChannel();
                if (session == null || (session as IContextChannel)==null)
                {
                    response[FieldKeyword.Success] = false;
                    response[FieldKeyword.CommonError] = ErrorNumber.CommonBadContext.ToString();
                }
                else
                    using (OperationContextScope scope = new OperationContextScope(session as IContextChannel))
                    {
                        var temp = request.ToString();
                        Stream stream = new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(temp)));
                        System.Diagnostics.Debug.WriteLine(request.ToString());
                        try
                        {
                            using (var responseStream = session.Method(funcName.ToString(), stream))
                            {
                                using (var decompressStream = new MemoryStream())
                                {
                                    KORT.Util.Tools.GZipDecompress(responseStream, decompressStream);
                                    decompressStream.Position = 0;
                                    StreamReader reader = new StreamReader(decompressStream, Encoding.UTF8);
                                    string text = reader.ReadToEnd();
                                    System.Diagnostics.Debug.WriteLine(text);
                                    response = JObject.Parse(text);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            System.Diagnostics.Debug.WriteLine(e.Message);
                            response[FieldKeyword.Success] = false;
                            response[FieldKeyword.CommonError] = ErrorNumber.Other.ToString();
                            response[FieldKeyword.ErrorDetail] = e.Message;
                        }
                    }
                return response;
            }
        }
예제 #2
0
파일: KORTClient.cs 프로젝트: jovijovi/kort
        public JObject Method(Functions funcName, JObject request, MethodCheckRequestParameters check)
        {
            if (!string.IsNullOrEmpty(Token))
            {
                request[FieldKeyword.Token] = Token;
            }
            if (!string.IsNullOrEmpty(Language))
            {
                request[FieldKeyword.Language] = Language;
            }
            JObject response = new JObject();

            if (ServerAddr == null || request == null || (check != null && !check(request)))
            {
                response[FieldKeyword.Success]     = false;
                response[FieldKeyword.CommonError] = ErrorNumber.CommonBadParameter.ToString();
                return(response);
            }

            var webBinding = new WebHttpBinding();

            webBinding.AllowCookies           = true;
            webBinding.MaxReceivedMessageSize = 1000 * 1024 * 1024;
            webBinding.ReaderQuotas.MaxStringContentLength = 1000 * 1024 * 1024;
            webBinding.SendTimeout    = new TimeSpan(0, 500, 0);
            webBinding.ReceiveTimeout = new TimeSpan(0, 500, 0);

            using (var factory = new WebChannelFactory <IService>(webBinding, ServerAddr))
            {
                factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
                var session = factory.CreateChannel();
                if (session == null || (session as IContextChannel) == null)
                {
                    response[FieldKeyword.Success]     = false;
                    response[FieldKeyword.CommonError] = ErrorNumber.CommonBadContext.ToString();
                }
                else
                {
                    using (OperationContextScope scope = new OperationContextScope(session as IContextChannel))
                    {
                        var    temp   = request.ToString();
                        Stream stream = new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(temp)));
                        System.Diagnostics.Debug.WriteLine(request.ToString());
                        try
                        {
                            using (var responseStream = session.Method(funcName.ToString(), stream))
                            {
                                using (var decompressStream = new MemoryStream())
                                {
                                    KORT.Util.Tools.GZipDecompress(responseStream, decompressStream);
                                    decompressStream.Position = 0;
                                    StreamReader reader = new StreamReader(decompressStream, Encoding.UTF8);
                                    string       text   = reader.ReadToEnd();
                                    System.Diagnostics.Debug.WriteLine(text);
                                    response = JObject.Parse(text);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            System.Diagnostics.Debug.WriteLine(e.Message);
                            response[FieldKeyword.Success]     = false;
                            response[FieldKeyword.CommonError] = ErrorNumber.Other.ToString();
                            response[FieldKeyword.ErrorDetail] = e.Message;
                        }
                    }
                }
                return(response);
            }
        }
예제 #3
0
파일: KORTClient.cs 프로젝트: jovijovi/kort
 private IAsyncResult BeginMethod(Functions funcName, JObject request, MethodCheckRequestParameters check, AsyncCallback callBackMethod)
 {
     var methodDelegate = new KORTClientMethodDelegate(Method);
     return methodDelegate.BeginInvoke(funcName, request, check, callBackMethod, methodDelegate);
 }
예제 #4
0
파일: KORTClient.cs 프로젝트: jovijovi/kort
        private IAsyncResult BeginMethod(Functions funcName, JObject request, MethodCheckRequestParameters check, AsyncCallback callBackMethod)
        {
            var methodDelegate = new KORTClientMethodDelegate(Method);

            return(methodDelegate.BeginInvoke(funcName, request, check, callBackMethod, methodDelegate));
        }