示例代码:

 1 using System.Net.Http;
2 using System.Net.Http.Headers;
3 using System.Threading.Tasks;
4
5 namespace MachineServer
6 {
7 public static class HttpHelper
8 {
9 public static HttpClient HttpClient { get; set; }
10
11 public static void InitializeClient()
12 {
13 //单例模式
14 if (HttpClient == null)
15 {
16 HttpClient = new HttpClient();
17 }
18
19 HttpClient.DefaultRequestHeaders.Accept.Clear();
20 HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
21
22 //能解读https类型
23 //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
24 }
25
26 /// <summary>
27 /// Get方法
28 /// </summary>
29 /// <param name="url">目标链接(含参数)</param>
30 /// <returns>返回的字符串</returns>
31 public static async Task<string> GetAsync(string url)
32 {
33 using (HttpResponseMessage response = await HttpClient.GetAsync(url))
34 {
35 response.EnsureSuccessStatusCode();
36 string result = await response.Content.ReadAsStringAsync();
37 return result;
38 }
39 }
40
41 /// <summary>
42 /// Post方法
43 /// </summary>
44 /// <param name="url">目标链接</param>
45 /// <param name="json">发送的json格式的参数字符串</param>
46 /// <returns>返回的字符串</returns>
47 public static async Task<string> PostAsync(string url, string json)
48 {
49 StringContent content = new StringContent(json);
50 content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
51
52 using (HttpResponseMessage response = await HttpClient.PostAsync(url, content))
53 {
54 response.EnsureSuccessStatusCode();
55 string result = await response.Content.ReadAsStringAsync();
56 return result;
57 }
58 }
59
60 /// <summary>
61 /// Post方法
62 /// </summary>
63 /// <param name="url">目标链接</param>
64 /// <param name="json">发送的json格式的参数字符串</param>
65 /// <returns>返回的字符串</returns>
66 public static async Task<string> PostAsync(string url, HttpContent content)
67 {
68 //HttpContent content = new FormUrlEncodedContent(new Dictionary<string, string>()
69 // {
70 // { "token", token},
71 // { "orderNo", orderNo}
72 // });
73 content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "utf-8" };
74
75 using (HttpResponseMessage response = await HttpClient.PostAsync(url, content))
76 {
77 response.EnsureSuccessStatusCode();
78 string result = await response.Content.ReadAsStringAsync();
79 return result;
80 }
81 }
82 }
83 }

Get方法

get方法传递参数,是将参数及其值直接跟在url后面,以?开始,中间用&间隔,类似:

string tokenString = await HttpHelper.GetAsync($"https://er.com/Apps/Mes/getToken?appKey=11&nonce=22&timestamp=33&signature=44");

Post方法

post方法传递参数有几种形式,需要看HTTP服务端那边支持哪种,客户端用时,需要将Header的ContentType设置正确。

总结以下三种:

1. json格式:

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

对应Postman中:

2. form-data格式:

content.Headers.Remove("Content-Type");
content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarypy5dIaqJBcHjn7sv");

对应Postman中:

3. x-www-form-urlencoded格式:

content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "utf-8" };

对应Postman中:

已测试Post方法的x-www-form-urlencoded方式使用成功

C# HttpClient类库的更多相关文章

  1. HttpClient 4.5.x 工具类设计与实现

    最近,业务需要在java服务端发起http请求,需要实现"GET","POST","PUT"等基本方法.于是想以 "HttpCli ...

  2. HttpClient请求服务器代码优化版

    HttpClient请求服务器代码优化版 首先,我在前面的两篇博文中介绍了在 Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换 ...

  3. Android使用HttpClient请求服务器代码优化版

    首先,我在前面的两篇博文中介绍了在Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附 ...

  4. JAVA发送HttpClient

    http://bijian1013.iteye.com/blog/2310211 在发送HTTP请求的时候会使用到POST和GET两种方式,如果是传送普通的表单数据,我们直接将参数到一个Key-val ...

  5. Excel催化剂开源第41波-网抓网络采集类库及工具分享

    在VBA开发网抓程序中,会用到xmlhttp/winHttp.winHttprequest.5.1等组件,当时笔者也是这样进入了网抓领域的,这些都是非常过时的东西,在.Net的开发中,有大量的更好用的 ...

  6. Spring Boot 中使用 HttpClient 进行 POST GET PUT DELETE

    有的时候,我们的 Spring Boot 应用需要调用第三方接口,这个接口可能是 Http协议.可能是 WebService.可能是 FTP或其他格式,本章讨论 Http 接口的调用. 通常基于 Ht ...

  7. 第一个web框架tornado

    简介 tornado,是我学到的第一个web框架是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google ...

  8. Android开源库--Asynchronous Http Client异步http客户端

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/loopj/android-async-http Api文档地址:http://loop ...

  9. Android中使用HTTP服务

    在Android中,除了使用java.net包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache Ht ...

随机推荐

  1. Javascript之递归求裴波那契数

    一.遍历的方式性能更加,递归的方式代码利于阅读.简短,性能略差 二.裴波那契数定义: · 位置0的裴波那契数为0 · 1和2的裴波那契数为1 · n(n > 2)裴波那契数为 (n-1)的裴波那 ...

  2. CNN-卷积神经网络简单入门(1)

    卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习 ...

  3. EKS助力小白实践云原生——通过k8s部署wordpress应用

    目前云原生在大厂已经有了充分的实践,也逐渐向小厂以及非互联网公司推广.适逢12月20日,腾讯云原生[燎原社]精心打造了云原生在线技术工坊,让零基础的同学也能快速入门和实践 Docker 和 Kuber ...

  4. JVM学习五:性能监控工具

    一.系统性能监控 系统性能工具用于确定系统运行的整体状态,基本定位问题所在. Linux – uptime • 系统时间 • 运行时间 n 例子中为7分钟 • 连接数 n 每一个终端算一个连接 • 1 ...

  5. @play.data.binding.NoBinding

    新的@play.data.binding.NoBinding注解允许我们定义一些"不应该被绑定"的字段,以防出现安全问题.例如: public class User extends ...

  6. Spring中声明式事务的几个属性的解释

    声明式事务 @Transactional (通常用在service层)事务属性:传播行为,隔离级别,回滚,只读,过期 1,spring支持事务传播行为:propagation(常用以下两个)    ① ...

  7. opencv笔记--ORB

    ORB detector 使用 FAST detector 和 BRIEF descriptor 基本思路.在介绍 ORB 之前,首先对 FAST 与 BRIEF 进行说明. 1 FAST FAST( ...

  8. 面向对象—多态、鸭子类型(Day21)

    编程原则java具有自己的编程原则和设计模式,不能多继承.python的编程原则:1.开放封闭原则:开放是对扩展是开放的,封闭是对修改是封闭的(已经写完的代码程序是不能修改的).2.依赖倒置原则:高层 ...

  9. spring boot全局配置文件优先级

    前两篇介绍的application配置文件,即为spring boot全局配置文件.那么spring boot加载配置文件的时候,怎么确定加载哪个目录下哪个文件呢? spring boot默认的配置文 ...

  10. 上架打包错误:error itms-90086

    这是一个很纠结的错误 大家第一反应肯定是 赶紧去看看 位数是否设置  然后发现没有问题  就开始懵逼了 (比如我) 然而无意看到了一个人写的简书 这个人在 Overflow 找到了一个答案 比如你选择 ...