コード例 #1
0
        //Execute method to make request
        public T execute <T>(YuanpayRequest <T> request) where T : YuanpayResponse
        {
            try
            {
                //Bind config
                if (yuanpayConfig == null)
                {
                    throw new YuanpayException("missing config information");
                }
                else
                {
                    //Basic auth validation
                    yuanpayConfig.basicValidate();
                }

                RequestBody requestBody = request.initRequestBody(yuanpayConfig);
                string      url         = requestBody.url;
                SortedDictionary <string, string> param = requestBody.param;

                //Param data validation
                JObject jsonParams = null;
                if (param.Count != 0)
                {
                    jsonParams = JObject.FromObject(param);
                }
                else
                {
                    jsonParams = new JObject();
                }

                string transJson = jsonParams.ToString();

                //Set header for http request
                var stringContent = new StringContent(transJson, Encoding.UTF8, "application/json");

                //Make post http request
                var    response     = client.PostAsync(url, stringContent).Result;
                string responseBody = null;

                T t;
                if (response.IsSuccessStatusCode)
                {
                    var responseContent = response.Content;
                    responseBody = responseContent.ReadAsStringAsync().Result;
                    t            = request.convertResponse(responseBody);
                }
                else
                {
                    HttpObject httpObject = new HttpObject();
                    httpObject.HttpStatusCode = response.StatusCode;
                    httpObject.HttpContent    = response.Content;
                    t = request.convertResponse(JsonConvert.SerializeObject(httpObject));
                }

                return(t);
            }
            catch (Exception e)
            {
                throw new YuanpayException(e.Message);
            }
            finally
            {
            }
        }