HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5。

它支持所有的http方法,自动转向,https协议,代理服务器。

一.Api接口参数标准化。

GET方式,可以有多个重载,有多个参数

POST方式,只能有一个参数,并且用[FromBody]约束,如果有多个参数,需要以对象的方式进行传递

Put方式,只能有两个参数,其中一个是通过Request.QueryString方式进行传递的,作为要更新对象的主键,别一个是[FromBody]字段,也是一个字段,如果多个字段需要把它封装成对象。

二.调用方

我们看一下最基本网页中ajax请求(Get | Set)

$.ajax({
url: "http://localhost:xxx/api/register",
type: "GET",
success: function (data) {
console.log("json:" + data);
}
});
$.ajax({
url: "http://localhost:xxx/api/register",
type: "Post",
data: {'':''}
success: function (data) {
console.log("json:" + data);
}
});

三.通过控制台实现Get&&Post请求

//Get:
static async void ClientGet()
{
string url = "http://localhost:xxx/api/register";
var handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip
};
using ( var http = new HttpClient( handler ) )
{
var response = await http.GetAsync( url ); response.EnsureSuccessStatusCode();
await response.Content.ReadAsStringAsync();
}
}
/*
* / <summary>
* / HttpClient实现Post请求
* / </summary>
*/
static async void dooPost()
{
string url = "http://localhost:52824/api/register";
var userId = "";
/* 设置HttpClientHandler的AutomaticDecompression */
var handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip
};
/* 创建HttpClient(注意传入HttpClientHandler) */
using ( var http = new HttpClient( handler ) )
{
/* 使用FormUrlEncodedContent做HttpContent */
var content = new FormUrlEncodedContent( new Dictionary<string, string>()
{
{ "", userId } /* 键名必须为空 */
} ); /* await异步等待回应 */ var response = await http.PostAsync( url, content ); /* 确保HTTP成功状态值 */
response.EnsureSuccessStatusCode();
/* await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip) */
Console.WriteLine( await response.Content.ReadAsStringAsync() );
}
}

无论是web,手机端,都是有自己的WebClient,都是一样的,语言也是,那如果说你的Api是一个的参数是一个对象类型的,这还是大同小异的,比如ajax的调用方式直接把data变成一个data对象,那我们C#的这个参数应该是个什么呢,这个时候我们应该用到FormUrlEncodedContent,使用这个类型去做httpcontext.

  var content = new FormUrlEncodedContent(new Dictionary<string, string>()
  { {"Id","6"},
{"Name","zara"},
{"Info", "zzh"}
 });

 那最后呢也没有什么区别了,只不过在异步去请求的时候去更换PostAsync , GetAsync , PutAsync 。

【WebApi】通过HttpClient调用Web Api接口的更多相关文章

  1. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

  2. WebApi系列~通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  3. WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递

    回到目录 上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对 ...

  4. 通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  5. 使用HttpClient 调用Web Api

    C#4.5 添加了异步调用Web Api . 如果你的项目是4.5以上版本,可以直接参考官方文档. http://www.asp.net/web-api/overview/web-api-client ...

  6. 【ASP.NET Web API2】利用HttpClient调用Web API(TODO)

    参照: 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 纯属记录一下遇到的问题: 我们利用HttpClient来调用自宿主方式寄宿的Web API.HttpCl ...

  7. WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递 【转】

    原文:http://www.cnblogs.com/lori/p/4045633.html 下面定义一个复杂类型对象 public class User_Info { public int Id { ...

  8. c# 【MVC】WebApi通过HttpClient来调用Web Api接口

    /// <summary> /// HttpClient实现Post请求(异步) /// </summary> static async void dooPost() { st ...

  9. WebApi~通过HttpClient来调用Web Api接口

    异步请求 ///<summary> /// HttpClient实现Post请求(异步) /// </summary> static async void dooPost() ...

随机推荐

  1. 个人总结ASP.NET必备面试题

    1.你能解释下MVC的完整流程吗? 所有的终端用户请求被发送到控制器.控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图.附加了模型数据的最终视图做为响应发送给终端用户. 2. 那你说一下你对 ...

  2. 动态规划——Russian Doll Envelopes

    这个题大意很好理解,通过例子就能明白,很像俄罗斯套娃,大的娃娃套小的娃娃.这个题是大信封套小信封,每个信封都有长和宽,如果A信封的长和宽都要比B信封的要大,那么A信封可以套B信封,现在给定一组信封的大 ...

  3. IntelliJ IDEA最新破解版2018.3.1(附2018.2.2 完美破解教程)

    2018.3.1最新版破解 1.官网下载IDEA 2018.3.1的商业版本点我去下载 2.破解jar下载:JetbrainsIdesCrack-3.4-release-enc.jar点我去下载 3. ...

  4. python入门 -- 环境搭建(windows)

    1. 下载Anaconda Anaconda内置了python解释器及经常使用的库,提供了编译好的环境.根据自己的操作系统,自行从下面网站挑选一个较新的版本,下载安装即可. https://mirro ...

  5. 《SpringMVC从入门到放肆》十四、SpringMVC分组数据校验

    上一篇我们学习了数据校验,但是在实际项目中,还是有些不够灵活,今天我们就来继续学习一种更灵活的数据校验方法——分组数据校验. 一.什么是分组校验 校验规则是定义在实体中的,而同一个实体可以被多个Con ...

  6. Android第三次作业

    制作音乐播放器 实现的功能: 歌曲的播放.暂停.停止.上一首.下一首.歌单列表的显示(获取本地歌曲). 成品图: 功能代码实现: 实现歌曲的播放.暂停.停止.上一首.下一首: public void ...

  7. 2.Git配置和关联GitHub

    1.配置本地信息, 右键Git Bush Here git config –global user.name '账号名' ##回车 git config –global user.email 邮箱 # ...

  8. [LeetCode] Fibonacci Number 斐波那契数字

    The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...

  9. [LeetCode] Bus Routes 公交线路

    We have a list of bus routes. Each routes[i] is a bus route that the i-th bus repeats forever. For e ...

  10. 05 - json转成树状结构

    var jsonData = eval(`[ {"id":"4","pid":"1","name": ...