C# HttpClient类库
示例代码:
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×tamp=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类库的更多相关文章
- HttpClient 4.5.x 工具类设计与实现
最近,业务需要在java服务端发起http请求,需要实现"GET","POST","PUT"等基本方法.于是想以 "HttpCli ...
- HttpClient请求服务器代码优化版
HttpClient请求服务器代码优化版 首先,我在前面的两篇博文中介绍了在 Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换 ...
- Android使用HttpClient请求服务器代码优化版
首先,我在前面的两篇博文中介绍了在Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附 ...
- JAVA发送HttpClient
http://bijian1013.iteye.com/blog/2310211 在发送HTTP请求的时候会使用到POST和GET两种方式,如果是传送普通的表单数据,我们直接将参数到一个Key-val ...
- Excel催化剂开源第41波-网抓网络采集类库及工具分享
在VBA开发网抓程序中,会用到xmlhttp/winHttp.winHttprequest.5.1等组件,当时笔者也是这样进入了网抓领域的,这些都是非常过时的东西,在.Net的开发中,有大量的更好用的 ...
- Spring Boot 中使用 HttpClient 进行 POST GET PUT DELETE
有的时候,我们的 Spring Boot 应用需要调用第三方接口,这个接口可能是 Http协议.可能是 WebService.可能是 FTP或其他格式,本章讨论 Http 接口的调用. 通常基于 Ht ...
- 第一个web框架tornado
简介 tornado,是我学到的第一个web框架是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google ...
- Android开源库--Asynchronous Http Client异步http客户端
如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/loopj/android-async-http Api文档地址:http://loop ...
- Android中使用HTTP服务
在Android中,除了使用java.net包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache Ht ...
随机推荐
- 创建一个python类 ,self init相关参数的简单介绍
一 创建 ''' 一 使用python 语法 创建一个类, 探究self 是干啥的 1 创建一个对象 car 2 写入两个行参 3 定义两个方法 ''' class Car(): ''' 二 init ...
- Basler相机启动问题xml读取出错
切记!同一张网卡上多网口分别连多相机的时候,不要用同一个网段!!很容易出错!
- TensorFlow 卷积神经网络实用指南 | iBooker·ApacheCN
原文:Hands-On Convolutional Neural Networks with TensorFlow 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心 ...
- Java 高效编程(Effective Java)中文第三版(补档)
来源:sjsdfg/effective-java-3rd-chinese <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过, ...
- BootStrap基础入门概述总结
是否还值得学习BootStrap 因为自己还是学生,自己在学习之前就先在网上看了看BootStrap是否在现在依旧流行,是否还值得学习. 以下是网友的一些评价: 20年11月 Bootstrap作为入 ...
- spring学习三:Spring Bean 生命周期
Bean 的生命周期 理解 Spring bean 的生命周期很容易.当一个 bean 被实例化时,它可能需要执行一些初始化使它转换成可用状态.同样,当 bean 不再需要,并且从容器中移除时,可能需 ...
- js对于客户端的区分代码
//区分设备 function judge_decice() { let ua =navigator.userAgent.toLowerCase(); if(/android|adr/gi.test( ...
- TCP三次握手和四次挥手【转】
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- elasticsearch搜索引擎的常用方法
1.term和termsterm和terms等查询,不会对查询对字段进行分词处理,适合于date.num.id等确切数据进行搜索 如果需要查询keywords,则查询等keywords必须是查询字段中 ...
- Appium链接夜神模拟器
参考官方技术文档: http://appium.io/slate/cn/master/ 确保已经安装jdk和adt adb需要配置系统环境变量: D:\adt-bundle-windows-x86_6 ...