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;

        }

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker从仓库找镜像

docker search -s 数量 要下载的 数量表示仓库start数

bzoj 1911: [Apio2010]特别行动队 2011-12-26

1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 892 Solved: 359[Submit][Status][Discuss] DescriptionInputOutputSample Input4 -1 10 -20 2 2 3 4 Sample Output9HINT Source _________________________________________ 很简单的动规方程&a…

docker pull 从仓库拉取镜像

docker pull 要拉取的镜像名 等价于 docker pull 要拉取的镜像名:lastest 拉取固定的镜像&#xff1a;docker pull 要拉取的镜像名:版本号 省略lastest表设计就是拉取的最新的

C#抓取网页HTML内容

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net; using System.Text; using System.IO; using System.Text.RegularExpressions; namespace Web { /// <summary> /// 公共方法类 /// </summary> p…

docker删除本地所有镜像

docker rmi -f ${docker images -qa}

WiFi避障小车

硬件清单&#xff1a; Wemos D1&#xff08;支持AP模式也就是路由模式和STA模式也就是上网设备&#xff09;、超声波模块、小车、L9110s步进电机控制器 软件&#xff1a; eclipse、arduino IDE WiFi配置参考博文 ESP8266WiFi库: 从上图中可以看出ESP8266WiFi库主要包含Stati…

yum常用命令整理

yum命令的形式一般如下。要说明的是以下演示中所使用到的PACKAGE、GROUP都是变量&#xff0c;需要保证运行yum命令的主机能连接外网&#xff0c;否则大部分命令将由于没有网络连接而不能输出结果。yum [options] [command] [package]#以下演示中大写的单词是变量1.安装操作yum …

CSS3 2D 转换

CSS3 2D 转换 先看兼容性 transform属性向应用元素应用2d 或者 3d装换&#xff1b;该属性允许我们进行旋转&#xff0c;缩放&#xff0c;移动或者倾斜&#xff1b; 基本语法&#xff1a; transform: none|transform-functions;transform-function&#xff1a;这东东有n的函数可…

程序猿最喜欢说的30句话

虽然代码总会有这个那个问题&#xff0c;但程序猿却总有谜一般的从容和自信。上图来自&#xff1a;《当程序出问题时程序员最喜欢说的30句话》来看看程序猿经常说的话&#xff1a;1、在我的电脑上是正常的啊。。。2、不可能出现这种情况的3、快了&#xff0c;已经完成了90%。4、…

linux环境下Ncurses实现贪吃蛇游戏

游戏说明&#xff1a; linux环境下基于Ncurses图形库的C语言小游戏。 Ncurses介绍&#xff1a; Ncurses(new curses)是一套编程库&#xff0c;它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。 Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本…

C#实现简体繁体转换代码示例

//简体转繁体 public static string _ConvertChinTrad(string strInput) { EncodeRobert edControl new EncodeRobert(); string strResult ""; if (strInput null) return strResult; if (strInput.ToString().Length > 1) strResult edControl.SCTCConvert(…

java基础JDK的安装和环境变量的配置

JRE和JDK&#xff1a; JRE是java程序运行时环境&#xff0c;包含JVM&#xff08;相当于java在不同操作系统上运行时java和操作系统之间的翻译&#xff0c;保证java程序的跨平台&#xff09;和运行时所需要的核心库。所以我们想要运行一个已有的java程序&#xff0c;那么只需要…

C#通过SMTP发送邮件代码示例

1、新建SMTP.cs类库文件 public class SMTP { /// <summary> /// SMTP服务器 /// </summary> public string smtp { get; set; } /// <summary> /// SMTP服务器端口 /// </summary> public int port { get; set; } /// <summary> /// 发件人 ///…

docker下载tomact

docker run -it -p 8080:8080 tomcat 比如下载tomcat,你现在去访问&#xff0c;先访问docker里面的tomcat, 左边的8080是对外暴露的服务端口&#xff0c;对应着右边的8080是tomact的实际端口 下载tomcat 启动tomcat docker run -it -p 8080:8080 tomcat

Wijmo 2016年蓝图

2015年很快就过去了&#xff0c;这是 Wijmo 重要的一年&#xff0c;尤其是对 Wijmo5。脱离传统的小部件&#xff0c;重新写一套 JS 控件&#xff0c;现在看来这个决定是正确的。用 TypeScript 写 Wijmo5&#xff0c;意味着我们没有任何依赖&#xff0c;不再需要 jQuery&#xf…

IDEA安装和运行HelloWorld

IDEA安装&#xff1a; IDEA中Hello World步骤&#xff1a; ① ②点击创建空项目&#xff0c;下一步 ③ ④在打开后会弹出以下界面&#xff0c;然后点击新建模块 ⑤点击新建模块后出现以下界面&#xff0c;选择java并选择JDK的安装路径。 ⑥然后修改模块名称&#xff0c;点击…

C#获取电脑IP、MAC地址示例代码

/// <summary> /// 使用 C# 自带的类库实现计算机信息获取 /// </summary> public class DefaultDeviceInfo { public virtual string GetCpuId() { try { string cpuInfo " "; ManagementClass cimobject new ManagementClass("Win32_Processor…

docker运行随机分配端口

docker run -d -it -P tomcat -P这个是大写的P&#xff0c;表示随机分配端口 执行后可以看到32768为随机分配的端口&#xff0c;8080是tomcat端口 测试成功