C#操作HttpClient工具类库
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工具类库相关推荐
- php excel读写,phpGrace 工具类库 - excel 读写操作
功能说明 excel 读写操作基于 PHPExecl 类库,可以方便的对 Excel 进行操作. 部署说明下载 PHPExcel.zip 解压后将全部文件部署到 phpGrace/tools 下 调用 ...
- 编写更少量的代码:使用apache commons工具类库
Commons-configuration Commons-FileUploadCommons DbUtilsCommons BeanUtils Commons CLI Commons CodecCo ...
- java 工具类库 Apache Commons
Apache Commons 常用的工具类如下 CLI CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API. Codec Codec 包含一些通用的编码解码算法.包括一些语音编码器, ...
- Hutool,一个贼好用的 Java 工具类库,用过都说好~
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ryanc.cc/archives/hutool-java- ...
- 贼好用的 Java 工具类库
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ryanc.cc/archives/hutool-java- ...
- 推荐一个好用的 Java 工具类库
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 最近博主看到了一款小而全的 Java 工具类库:Huto ...
- 实用工具类库java.util
本章介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.例如,Java提供日期(Data)类.日历(Calendar)类来产生和获取日期及时间,提供随机 ...
- 贼好用的 Java 工具类库,GitHub 星标 10k+,你在用吗?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 作者:Ryan Wang ryanc.cc/ ...
- .NET开源工具类库:Masuit.Tools
[开源框架]| 通用工具类库 这是恰童鞋骚年的第223篇原创文章 本文介绍一个我的同事[懒得勤快](人称勤快哥,我们叫他骚哥)写的一个.NET开源工具类库项目,包含一些常用的操作类,大都是静态类,加密 ...
最新文章
- blf文件用什么软件打开_如何用皕杰流程创建一个blf演示流程文件?
- c++将小数化为二进制_C++版进制转换(十进制,二进制,十六进制整数和小数)
- iframe的子界面获取父界面的标签元素
- Android 根证书管理与证书验证
- Spring4基础 学习笔记(5) ---- Spring与Dao
- 为什么梯度下降法对于非线性可分数据有效
- oracle计算最大与最小之间数,oracle 分析函数
- springJdbc in 查询,Spring namedParameterJdbcTemplate in查询
- 【视觉动效】全网最强解析播放器(自定义修改)源码
- RxSwift学习插曲--Timer补充内容
- RegCloseKey函数
- 433.最小基因变化
- php滑动门效果,JavaScript实现滑动门效果
- Vue中解决数据量过大导致页面崩溃;解决方案
- python导入excel加入折线图_Python openpyxl 插入折线图实例
- 计算机科学 杂志 撤稿,哈佛教授2篇顶刊遭撤稿:相同样品花样“复用”,伪装成不同实验结果...
- cubieboard
- 逻辑思维训练——假设法
- visitor模式入门
- python天气预报项目详细设计书_天气预报详细设计说明书
热门文章
- 五轴加工的RTCP技术
- Machine Vision Pixel Calibration~ ~ ~ ~ ~ ~ ~ ~ ~ ~
- 【图像处理】——图像的灰度化处理(Python实现三种方法——最大值法、平均值法、加权均值法、gamma校正)
- Pytorch基础(三)—— DataSet的应用
- android导航二级分类,Android实现腾讯新闻的新闻类别导航效果
- 操作系统实验文件管理_系统设计硬核知识(5)——操作系统的文件管理
- C#JsonConvert.DeserializeObject反序列化json字符
- 【莫比乌斯反演】10.30破译密码
- 搭建服务器Apache+PHP+MySql需要注意的问题
- CSS3实现多样的边框效果