• HttpClientHelper


    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml.Serialization;
    
    namespace SXYC.Common
    {
        public class HttpClientHelpClass
        {
            /// <summary>
            /// get请求
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            public static string GetResponse(string url, out string statusCode)
            {
                if (url.StartsWith("https"))
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Accept.Add(
                  new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage response = httpClient.GetAsync(url).Result;
                statusCode = response.StatusCode.ToString();
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return result;
                }
                return null;
            }
    
            public static string RestfulGet(string url)
            {
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                // Get response
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    // Console application output
                    return reader.ReadToEnd();
                }
            }
    
            public static T GetResponse<T>(string url)
               where T : class, new()
            {
                if (url.StartsWith("https"))
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Accept.Add(
                   new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage response = httpClient.GetAsync(url).Result;
    
                T result = default(T);
    
                if (response.IsSuccessStatusCode)
                {
                    Task<string> t = response.Content.ReadAsStringAsync();
                    string s = t.Result;
    
                    result = JsonConvert.DeserializeObject<T>(s);
                }
                return result;
            }
    
            /// <summary>
            /// post请求
            /// </summary>
            /// <param name="url"></param>
            /// <param name="postData">post数据</param>
            /// <returns></returns>
            public static string PostResponse(string url, string postData, out string statusCode)
            {
                if (url.StartsWith("https"))
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                HttpContent httpContent = new StringContent(postData);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                httpContent.Headers.ContentType.CharSet = "utf-8";
    
                HttpClient httpClient = new HttpClient();
                //httpClient..setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
    
                HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
    
                statusCode = response.StatusCode.ToString();
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return result;
                }
    
                return null;
            }
    
            /// <summary>
            /// 发起post请求
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="url">url</param>
            /// <param name="postData">post数据</param>
            /// <returns></returns>
            public static T PostResponse<T>(string url, string postData)
                where T : class, new()
            {
                if (url.StartsWith("https"))
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                HttpContent httpContent = new StringContent(postData);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                HttpClient httpClient = new HttpClient();
    
                T result = default(T);
    
                HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
    
                if (response.IsSuccessStatusCode)
                {
                    Task<string> t = response.Content.ReadAsStringAsync();
                    string s = t.Result;
    
                    result = JsonConvert.DeserializeObject<T>(s);
                }
                return result;
            }
    
            /// <summary>
            /// 异步post请求
            /// </summary>
            /// <param name="url"></param>
            /// <param name="jsonParam"></param>
            /// <param name="encode"></param>
            /// <param name="dic"></param>
            /// <returns></returns>
            public async static Task<string> PostJsonAsync(string url, string jsonParam, string encode, Dictionary<string, string> dic)
            {
                using (var client = new HttpClient())
                {
                    foreach (KeyValuePair<string, string> item in dic)
                    {
                        client.DefaultRequestHeaders.Add(item.Key, item.Value);
                    }
                    // string strDecodeBody = HttpUtility.UrlEncode(jsonParam);
                    HttpContent content = new StringContent(jsonParam);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var response = await client.PostAsync(url, content);
    
                    var responseString = await response.Content.ReadAsStringAsync();
                    return responseString;
                }
            }
    
    
            /// <summary>
            /// 反序列化Xml
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="xmlString"></param>
            /// <returns></returns>
            public static T XmlDeserialize<T>(string xmlString)
                where T : class, new()
            {
                try
                {
                    XmlSerializer ser = new XmlSerializer(typeof(T));
                    using (StringReader reader = new StringReader(xmlString))
                    {
                        return (T)ser.Deserialize(reader);
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("XmlDeserialize发生异常:xmlString:" + xmlString + "异常信息:" + ex.Message);
                }
    
            }
    
            public static string PostResponse(string url, string postData, string token, string appId, string serviceURL, out string statusCode)
            {
                if (url.StartsWith("https"))
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                HttpContent httpContent = new StringContent(postData);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                httpContent.Headers.ContentType.CharSet = "utf-8";
    
                httpContent.Headers.Add("token", token);
                httpContent.Headers.Add("appId", appId);
                httpContent.Headers.Add("serviceURL", serviceURL);
    
    
                HttpClient httpClient = new HttpClient();
                //httpClient..setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
    
                HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
    
                statusCode = response.StatusCode.ToString();
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return result;
                }
    
                return null;
            }
    
            /// <summary>
            /// 修改API
            /// </summary>
            /// <param name="url"></param>
            /// <param name="postData"></param>
            /// <returns></returns>
            public static string KongPatchResponse(string url, string postData)
            {
                var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                httpWebRequest.Method = "PATCH";
    
                byte[] btBodys = Encoding.UTF8.GetBytes(postData);
                httpWebRequest.ContentLength = btBodys.Length;
                httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                var streamReader = new StreamReader(httpWebResponse.GetResponseStream());
                string responseContent = streamReader.ReadToEnd();
    
                httpWebResponse.Close();
                streamReader.Close();
                httpWebRequest.Abort();
                httpWebResponse.Close();
    
                return responseContent;
            }
    
            /// <summary>
            /// 创建API
            /// </summary>
            /// <param name="url"></param>
            /// <param name="postData"></param>
            /// <returns></returns>
            public static string KongAddResponse(string url, string postData)
            {
                if (url.StartsWith("https"))
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                HttpContent httpContent = new StringContent(postData);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "utf-8" };
                var httpClient = new HttpClient();
                HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return result;
                }
                return null;
            }
    
            /// <summary>
            /// 删除API
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            public static bool KongDeleteResponse(string url)
            {
                if (url.StartsWith("https"))
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                var httpClient = new HttpClient();
                HttpResponseMessage response = httpClient.DeleteAsync(url).Result;
                return response.IsSuccessStatusCode;
            }
    
            /// <summary>
            /// 删除API
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            public static Task<string> Delete(string url, Dictionary<string, string> dic)
            {
                if (url.StartsWith("https"))
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                using (var client = new HttpClient())
                {
                    foreach (KeyValuePair<string, string> item in dic)
                    {
                        client.DefaultRequestHeaders.Add(item.Key, item.Value);
                    }
    
                    HttpResponseMessage response = client.DeleteAsync(url).Result;
                    return Task.Run(() =>
                    {
                        return response.StatusCode.ToString();
                    });
                }
    
    
            }
    
            /// <summary>
            /// 修改或者更改API        
            /// </summary>
            /// <param name="url"></param>
            /// <param name="postData"></param>
            /// <returns></returns>
            public static string KongPutResponse(string url, string postData)
            {
                if (url.StartsWith("https"))
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                HttpContent httpContent = new StringContent(postData);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "utf-8" };
    
                var httpClient = new HttpClient();
                HttpResponseMessage response = httpClient.PutAsync(url, httpContent).Result;
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return result;
                }
                return null;
            }
    
            /// <summary>
            /// 检索API
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            public static string KongSerchResponse(string url)
            {
                if (url.StartsWith("https"))
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
    
                var httpClient = new HttpClient();
                HttpResponseMessage response = httpClient.GetAsync(url).Result;
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return result;
                }
                return null;
            }
        }
    }
  • 相关阅读:
    Different ways how to escape an XML string in C#
    __VIEWSTATE
    Git for Computer Scientists
    关于SQL Server死锁
    20个开源项目托管站点
    Understanding Host Headers in IIS
    开发与研发:区别很大
    Linux 0.12 “轮子”任务调度图示
    RabbitMQ学习第二记:工作队列的两种分发方式,轮询分发(Roundrobin)和 公平分发(Fair dispatch)
    ResultSetMetaData中getColumnLabel和getColumnName的区别
  • 原文地址:https://www.cnblogs.com/wyt007/p/8202763.html
Copyright © 2020-2023  润新知