使用 HttpClient 请求 Web Api
1.获取 post 请求 body 内容 [HttpPost]
public string GetId()
{
//如果方法参数里面有 [FromBody],则需要重新调整内容指针,再进行读取。
//Request.Content.ReadAsStreamAsync().Result.Seek(0,System.IO.SeekOrigin.Begin);
string content = Request.Content.ReadAsStringAsync().Result;
return content;
}
方法名称 | 描述 |
GetAsync | 发送一个GET请求到指定的Uri,异步操作。 |
GetByteArrayAsync | 向指定的Uri发送一个GET请求,并将返回响应的数据作为一个字节数组,异步操作。 |
GetStreamAsync | 向指定的Uri发送一个GET请求,并返回响应的数据流,异步操作。 |
GetStringAsync | 向指定的Uri发送一个GET请求,并将返回响应的数据转换为Sting,异步操作。 |
PostAsync | 向指定的Uri发送一个POST请求,异步操作。 |
PostAsJsonAsync | 向指定的Uri发送一个Post请求,返回数据格式为json,异步操作。 |
PostAsXmlAsync | 向指定的Uri发送一个Post请求,返回数据格式为xml,异步操作。 |
PutAsync | 向指定的Uri发送一个Put请求,异步操作。 |
PutAsJsonAsync | 向指定的Uri发送一个Put请求,返回数据格式为json,异步操作。 |
PutAsXmlAsync | 向指定的Uri发送一个Put请求,返回数据格式为xml,异步操作。 |
DeleteAsync | 向指定的Uri发送一个Delete请求,异步操作。 |
private static void SendRequest()
{
using (var client = new System.Net.Http.HttpClient())
{ client.BaseAddress = new Uri("http://192.168.1.3:42561/");
var url = "apitest/order/pager"; //添加自定义头信息
client.DefaultRequestHeaders.Add("name", "wjire"); //设置头信息中的 Authorization
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("scheme", "Mima"); //PostAsJsonAsync 及上表中几个类似方法都需要引用nuget中的 Microsoft.AspNet.WebApi.Client //Post方法一:用json格式传递参数
//client.PostAsJsonAsync(url, new Person { Name = "fffff", Id = 123, Age = 100 }).ContinueWith(GetResponse);; //Post方法二:匿名类,原理同方法一
//var content = new
//{
// Name = "gg",
// Id = 1,
// Age = 1
//};
//client.PostAsJsonAsync(url, content).ContinueWith(GetResponse);; //Post方法三: 原生的键值对形式传递参数
//var content = new FormUrlEncodedContent(new Dictionary<string, string>
// {
// {"id","1" },
// {"name","wjjj" },
// {"age","100" }
// });
//client.PostAsync(url, content).ContinueWith(GetResponse);; //Get方式
//这里如果要传递参数,参数个数必须包含请求的API接口所接收的所有参数,只能多,不能少,否则无法传递.其实多了也没有意义
var task = client.GetAsync(url + "?age=100&id=121&name=go1ng").ContinueWith(GetResponse); Console.ReadLine();
}
} private static void GetResponse(Task<HttpResponseMessage> obj)
{
var getResult = obj.Result; //判断请求是否成功
var isSuccess = getResult.IsSuccessStatusCode;
if (isSuccess)
{
//这里当然也可以转成自定义类
var readResult = getResult.Content.ReadAsAsync<dynamic>();
var model = readResult.Result;
Console.WriteLine(model.Age);
Console.WriteLine(model.Name);
Console.WriteLine(model.Id);
}
}
使用 HttpClient 请求 Web Api的更多相关文章
- .Net Core使用HttpClient请求Web API注意事项
HttpClient 使用HttpClient可以很方便的请求Web API,但在使用时有一些需要注意的地方,不然会给你的程序带来毁灭性的问题. HttpClient是一个继承了IDisposable ...
- Web API WinForm使用HttpClient呼叫Web API
前言 之前几篇文章已经介绍了 Web 与 Web API 的使用方式,接下来将介绍如何在 Windows Form 呼叫 Web API 的方法,要在 WinForm 中使用 Web API 的话,除 ...
- WebApi系列~实际项目中如何使用HttpClient向web api发异步Get和Post请求并且参数于具体实体类型
回到目录 本讲比较实际,在WEB端有一个Index和Create方法,用来从web api显示实体列表数据和向api插入实体对象,这就是以往的网站,只不过是把数据持久化过程放到了web pai上面,它 ...
- 使用HttpClient 调用Web Api
C#4.5 添加了异步调用Web Api . 如果你的项目是4.5以上版本,可以直接参考官方文档. http://www.asp.net/web-api/overview/web-api-client ...
- 【ASP.NET Web API2】利用HttpClient调用Web API(TODO)
参照: 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 纯属记录一下遇到的问题: 我们利用HttpClient来调用自宿主方式寄宿的Web API.HttpCl ...
- ajax GET和POST请求web api 的几种方式
GET请求 1.无参数get请求 一般get请求有两种写法,一种是 $.get() 一种是$.ajax({type:"get"}), 我个人比较喜欢用后者. 下面例子主要是ge ...
- C# 请求Web Api 接口,返回的json数据直接反序列化为实体类
须要的引用的dll类: Newtonsoft.Json.dll.System.Net.Http.dll.System.Net.Http.Formatting.dll Web Api接口为GET形式: ...
- MUI 跨域请求web api
由于刚接触MUI框架,所以在跨域问题上花了一点时间.希望我的方式能帮你少走点弯路(大神就直接过里吧)! 首先,遇到这个问题,各种百度.其中说法最多的是将mui,js文件里的 setHeader('X- ...
- 【WebApi】通过HttpClient调用Web Api接口
HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...
随机推荐
- 使用Angular CLI生成 Angular 5项目
如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文. Angular CLI 官网: https://github.com/angular/angular- ...
- centos7上修改主机名
centos7上修改主机名 2017-10-09 13:45:17 个人原创,转载请注明,否则追究法律责任 1,临时修改: 和centos5,centos6 一样,重启失效 2,永久修改: 命令: ...
- 求第k小的元素
用快排解决: 用快排,一趟排序后,根据基准值来缩小问题规模.基准值的下角标i 加1 表示了基准值在数组中第几小.如果k<i+1,那就在左半边找:如果k>i+1那就在右半边找.当基准值的下角 ...
- 笔记:Maven Web项目
生成Web项目模块 生成Web项目模板和生成其他项目的模板一致,差别是指定模板的类型,执行命令如下: mvn archetype:generate -DarchetypeArtifactId=mave ...
- MYSQL数据库学习十二 使用MySQL运算符
12.1 算术运算符 + - * /(DIV) %(MOD) 12.2 比较运算符 > < = <=> != <> >= <= BETWEEN AND ...
- Nginx代理转发Apache+svn
1.安装svn和httpd yum install httpd yum install subversion mod_dav_svn 创建仓库目录 mkdir -p /var/www/svn 3.创建 ...
- 数据管理 - 每天5分钟玩转 Docker 容器技术(147)
本章将讨论 Kubernetes 如何管理存储资源. 首先我们会学习 Volume,以及 Kubernetes 如何通过 Volume 为集群中的容器提供存储:然后我们会实践几种常用的 Volume ...
- 如何在win10查看wifi密码
tep1 找到wifi图标 step 2 右键点击打开网络共享中心 没有啦!!
- ssm中iReport报表使用json数据源过程体会
前言:做这个一定要有耐心,因为报表本就是数据杂糅到规整的过程,这篇心得会细讲每一步操作,如果只想着一眼到位,建议close tab 在公司中遇到项目,大概是一个这样的需求,有一个列表和一个标题,需要把 ...
- beta冲刺5
昨天的问题: 登陆页面的整合重新制作 各主机版本更迭 我的社团显示功能修改调整 主页的头部替换掉 +修复帖子无法显示内容的问题 +试着将邮箱等判定用正则表达式进行实时判定. 今天的完成: 主要是线下进 ...