C#操作HttpClient工具类库

640?wx_fmt=jpeg

using System;

using System.Collections.Generic;

using System.Net.Http;

using System.Windows.Forms;

using System.Configuration;

using System.IO;

using Newtonsoft.Json;

namespace Dcflow

{

    public class HttpHelper

    {

        //获取Configuration对象

        

        public static string DCFLOW_ZUUL = ConfigurationManager.AppSettings["SERVER_URL"];

        //token键

        public static string ACCESS_TOKEN_KEY = "";

        //token值

        public static string ACCESS_TOKEN_VALUE = "";

        private static Dictionary<string, string> headers;

        public static Dictionary<string, string> Headers { get => headers; set => headers = value; }

        private static readonly HttpClient _httpClient;

        static HttpHelper()

        {

            try

            {

                //HttpClient热身

                _httpClient = new HttpClient() { BaseAddress = new Uri(DCFLOW_ZUUL) };

                _httpClient.DefaultRequestHeaders.Connection.Add("keep-alive");

                _httpClient.SendAsync(new HttpRequestMessage

                {

                    Method = new HttpMethod("HEAD"),

                    RequestUri = new Uri(DCFLOW_ZUUL + "/")

                }).Result.EnsureSuccessStatusCode();

            }

            catch (Exception)

            {

                

            }

        }

        public static String httpGet(string url)

        {

            

            if (HttpHelper.headers != null)

            {

                _httpClient.DefaultRequestHeaders.Clear();

                headers[ACCESS_TOKEN_KEY] = HttpHelper.ACCESS_TOKEN_VALUE;

                

                // 设置请求头

                foreach (KeyValuePair<string, string> item in headers)

                {

                    _httpClient.DefaultRequestHeaders.Add(item.Key, item.Value);

                }

            }

            var data = "";

            try

            {

                // response

                var response = _httpClient.GetAsync(new Uri(DCFLOW_ZUUL + url)).Result;

                data = response.Content.ReadAsStringAsync().Result;

            }

            catch (Exception e)

            {

                MessageBox.Show("HTTP GET请求失败,请检查网络或联系管理员查看服务器状态,错误消息:" + e.Message);

                //throw;

            }

            return data;//接口调用成功获取的数据

        }

        public static String httpPost(string url, Dictionary<string, string> param, string dataType)

        {

            

            if (HttpHelper.headers != null)

            {

                _httpClient.DefaultRequestHeaders.Clear();

                headers[ACCESS_TOKEN_KEY] = HttpHelper.ACCESS_TOKEN_VALUE;

                //设置请求头

                foreach (KeyValuePair<string, string> item in headers)

                {

                    _httpClient.DefaultRequestHeaders.Add(item.Key, item.Value);

                }

            }

            var data = "";

            try

            {

                ByteArrayContent content = null;

                if (dataType.ToLower().Equals("json"))

                {

                    content = new StringContent(JsonConvert.SerializeObject(param));

                    //设置Http的内容标头

                    content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

                }

                else

                {

                    content = new FormUrlEncodedContent(param);

                }

                // response

                var response = _httpClient.PostAsync(DCFLOW_ZUUL + url, content).Result;

                data = response.Content.ReadAsStringAsync().Result;

            }

            catch (Exception e)

            {

                MessageBox.Show("HTTP POST请求失败,请检查网络或联系管理员查看服务器状态,错误消息:" + e.Message);

                //throw;

            }

            return data;//接口调用成功数据

        }

        public static String httpUploadAsync(string url, List<string> filePath)

        {

            var data = "";

            

  

            try

            {

                using (var content = new MultipartFormDataContent())

                {

                    for (int i = 0; i < filePath.Count; i++)

                    {

                        FileStream fs = File.OpenRead(filePath[i]);

                        var streamContent = new StreamContent(fs);

                        var imageContent = new ByteArrayContent(streamContent.ReadAsByteArrayAsync().Result);

                        content.Add(imageContent, "upfile", Path.GetFileName(filePath[i]));

                        fs.Close();

                    }

                    // response

                    var response = _httpClient.PostAsync(DCFLOW_ZUUL + url, content).Result;

                    data = response.Content.ReadAsStringAsync().Result;

                };

            }

            catch (Exception e)

            {

                MessageBox.Show("HTTP POST MultipartFormData 请求失败,请检查网络或联系管理员查看服务器状态,错误消息:" + e.Message);

                //throw;

            }

            

            return data;

        }

    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT技术分享社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值