public void sendApiRequestAsync(
            Dictionary <object, object> context, RequestInputModel paramBean, ResponseCallBack callback)
        {
            string validate = paramBean != null?paramBean.validateParam() : "";

            EvnContext evnContext  = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];
            string     evnValidate = evnContext.validateParam();

            if (!QSStringUtil.isEmpty(validate) || !QSStringUtil.isEmpty(evnValidate))
            {
                if (QSStringUtil.isEmpty(validate))
                {
                    validate = evnValidate;
                }
                OutputModel Out = QSParamInvokeUtil.getOutputModel(callback);
                QSHttpRequestClient.fillResponseCallbackModel(QSConstant.REQUEST_ERROR_CODE, validate, Out);
                callback.onAPIResponse(Out);
            }
            else
            {
                HttpWebRequest request = buildRequest(context, paramBean);
                QSHttpRequestClient.getInstance()
                .requestActionAsync(request, evnContext.isSafeOkHttp(), callback);
            }
        }
        public virtual OutputModel requestActionAsync(HttpWebRequest request, Boolean bSafe, ResponseCallBack callBack)
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            try
            {
                if (callBack != null)
                {
                    OutputModel m = QSParamInvokeUtil.getOutputModel(callBack);
                    fillResponseValue2Object(response, m);
                    callBack.onAPIResponse(m);
                }
            }
            catch (Exception e)
            {
                logger.Fatal(e.Message);
                onOkhttpFailure(e.Message, callBack);
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
            }
            return(null);
        }
        public void testClassToModel()
        {
            Object outmodel = null;

            try
            {
                outmodel = QSParamInvokeUtil.getOutputModel(typeof(Bucket.PutBucketACLOutput));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Assert.AreEqual(outmodel.GetType().Name, typeof(Bucket.PutBucketACLOutput).Name);
        }
 private void onOkhttpFailure(String message, ResponseCallBack callBack)
 {
     try
     {
         if (callBack != null)
         {
             OutputModel m = QSParamInvokeUtil.getOutputModel(callBack);
             fillResponseCallbackModel(QSConstant.REQUEST_ERROR_CODE, message, m);
             callBack.onAPIResponse(m);
         }
     }
     catch (Exception ee)
     {
         logger.Fatal(ee.Message);
         throw new Exception(ee.Message);
     }
 }
        /*private HttpWebResponse getRequestCall(Boolean bSafe,HttpWebRequest request)
         * {
         *  if (bSafe)
         *  {
         *      return client
         * } else {
         *  return this.unsafeClient.newCall(request);
         * }
         * }*/

        public OutputModel requestAction(HttpWebRequest request, Boolean bSafe, Type outputClass)
        {
            HttpWebResponse response = null;

            try
            {
                OutputModel model = (OutputModel)QSParamInvokeUtil.getOutputModel(outputClass);
                response = (HttpWebResponse)request.GetResponse();
                fillResponseValue2Object(response, model);
                return(model);
            }
            catch (WebException e)
            {
                logger.Fatal(e.Message);
                Stream       stream = e.Response.GetResponseStream();
                StreamReader st     = new StreamReader(stream);
                string       str    = st.ReadToEnd();
                System.Console.WriteLine(str);
            }
            return(null);
        }