不同ContentType的post请求

        public static T Invoke<T>(string url, object input, bool requireJSON = true)
        {
            using (var client = new HttpClient())
            {
                HttpContent httpContent = null;

                if (input != null)
                {
                    string paramJson = string.Empty;

                    if (requireJSON)
                    {
                        paramJson = JsonConvert.SerializeObject(input);
                    }
                    else
                    {
                        paramJson = Convert.ToString(input);
                    }

                    httpContent = new StringContent(paramJson);
                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                }

                var response = client.PostAsync(url, httpContent).Result;

                var result = response.Content.ReadAsStringAsync().Result;

                var output = JsonConvert.DeserializeObject<T>(result);

                return output;
            }
        }
application/json
        
        public static R Post3w<P, R>(string url, P input)
        {
            using (HttpClient client = new HttpClient())
            {
                HttpRequestMessage request = new HttpRequestMessage();
                request.Method = HttpMethod.Post;
                request.RequestUri = new Uri(url);

                string inputJson = JsonConvert.SerializeObject(input);
                Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(inputJson);  //convert to key/value pairs
                request.Content = new FormUrlEncodedContent(values);

                var response = client.SendAsync(request).Result;
                var json = response.Content.ReadAsStringAsync().Result;
                return JsonConvert.DeserializeObject<R>(json);
            }
        }
application/x-www-form-urlencoded

 

posted @ 2017-11-18 15:39  Jack毛  阅读(607)  评论(0)    收藏  举报