• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#操作HttpClient工具类库

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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;

        }


    }

}



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#对象深度克隆发布时间:2022-07-13
下一篇:
EMV/PBOC解析(三)TLV格式解析(C#)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap