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;

}

}

}

C#操作HttpClient工具类库相关推荐

  1. php excel读写,phpGrace 工具类库 - excel 读写操作

    功能说明 excel 读写操作基于 PHPExecl 类库,可以方便的对 Excel 进行操作. 部署说明下载 PHPExcel.zip 解压后将全部文件部署到 phpGrace/tools 下 调用 ...

  2. 编写更少量的代码:使用apache commons工具类库

    Commons-configuration Commons-FileUploadCommons DbUtilsCommons BeanUtils Commons CLI Commons CodecCo ...

  3. java 工具类库 Apache Commons

    Apache Commons 常用的工具类如下 CLI  CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API. Codec  Codec 包含一些通用的编码解码算法.包括一些语音编码器, ...

  4. Hutool,一个贼好用的 Java 工具类库,用过都说好~

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ryanc.cc/archives/hutool-java- ...

  5. 贼好用的 Java 工具类库

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ryanc.cc/archives/hutool-java- ...

  6. 推荐一个好用的 Java 工具类库

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 最近博主看到了一款小而全的 Java 工具类库:Huto ...

  7. 实用工具类库java.util

    本章介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.例如,Java提供日期(Data)类.日历(Calendar)类来产生和获取日期及时间,提供随机 ...

  8. 贼好用的 Java 工具类库,GitHub 星标 10k+,你在用吗?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 作者:Ryan Wang ryanc.cc/ ...

  9. .NET开源工具类库:Masuit.Tools

    [开源框架]| 通用工具类库 这是恰童鞋骚年的第223篇原创文章 本文介绍一个我的同事[懒得勤快](人称勤快哥,我们叫他骚哥)写的一个.NET开源工具类库项目,包含一些常用的操作类,大都是静态类,加密 ...

最新文章

  1. blf文件用什么软件打开_如何用皕杰流程创建一个blf演示流程文件?
  2. c++将小数化为二进制_C++版进制转换(十进制,二进制,十六进制整数和小数)
  3. iframe的子界面获取父界面的标签元素
  4. Android 根证书管理与证书验证
  5. Spring4基础 学习笔记(5) ---- Spring与Dao
  6. 为什么梯度下降法对于非线性可分数据有效
  7. oracle计算最大与最小之间数,oracle 分析函数
  8. springJdbc in 查询,Spring namedParameterJdbcTemplate in查询
  9. 【视觉动效】全网最强解析播放器(自定义修改)源码
  10. RxSwift学习插曲--Timer补充内容
  11. RegCloseKey函数
  12. 433.最小基因变化
  13. php滑动门效果,JavaScript实现滑动门效果
  14. Vue中解决数据量过大导致页面崩溃;解决方案
  15. python导入excel加入折线图_Python openpyxl 插入折线图实例
  16. 计算机科学 杂志 撤稿,哈佛教授2篇顶刊遭撤稿:相同样品花样“复用”,伪装成不同实验结果...
  17. cubieboard
  18. 逻辑思维训练——假设法
  19. visitor模式入门
  20. python天气预报项目详细设计书_天气预报详细设计说明书

热门文章

  1. 五轴加工的RTCP技术
  2. Machine Vision Pixel Calibration~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  3. 【图像处理】——图像的灰度化处理(Python实现三种方法——最大值法、平均值法、加权均值法、gamma校正)
  4. Pytorch基础(三)—— DataSet的应用
  5. android导航二级分类,Android实现腾讯新闻的新闻类别导航效果
  6. 操作系统实验文件管理_系统设计硬核知识(5)——操作系统的文件管理
  7. C#JsonConvert.DeserializeObject反序列化json字符
  8. 【莫比乌斯反演】10.30破译密码
  9. 搭建服务器Apache+PHP+MySql需要注意的问题
  10. CSS3实现多样的边框效果