//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 { } }