使用 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接口参数标准化 ...
随机推荐
- 云计算之路-阿里云上:docker swarm 集群再次出现故障
非常非常抱歉!16:30 ~ 17:00 左右我们用于跑 ASP.NET Core 站点的 docker swarm 集群再次出现宕机,由此给您带来了很大很大的麻烦,恳请您的谅解! 受此次故障影响的站 ...
- Java Swing应用程序JLable超链接
在HTML中设置一个超链接是很容易的,使用<a></a>标签就可以完成了. 在客户端应用程序中,并没有这样的标签,但是可以使用按钮来实现,But 有时候就是想好看一点,不想要按 ...
- 【Unity与23种设计模式】适配器模式(Adapter)
GoF中定义: "将一个类的接口转换成为客户端期待的类接口.适配器模式让原本接口不兼容的类能一起合作." 适配器模式与装饰模式有一定的相似之处 两者都是在着手解决C#不能多继承的问 ...
- 数据操纵:SELECT, INSERT, UPDATE, DELETE
SELECT 句法 SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE ...
- JDBC控制事务
概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并 ...
- c# 根据唯一码,存缓存 实现12小时内 阅读量+1
需求:某一个详细页面需要实现用户 12小时内阅读量+1, 实现思路;得到一个唯一码的机器码,不管是否用户登录了 都有这个码,然后存到缓存里面 最后判断时间+12小时 是否超过当前时间 string ...
- Java中调用文件中所有bat脚本
//调用外部脚本String fileips=null;//所有的路径String[] files=null;String fileip=null;//单个路径try { InputStream is ...
- Mysql5.7动态修改innodb_buffer_pool_size
SELECT @@innodb_buffer_pool_size,@@innodb_buffer_pool_chunk_size,@@innodb_buffer_pool_instances; SET ...
- maven 技术总结
1.版本统一控制 在 properties中配置一个参数,在添加依赖时 通过 version标签 限定版本 <properties> <org.springframework.ver ...
- linux(ubuntu)环境下安装IDEA
想调试java虚拟机内存溢出的情况,在调试过程中总会出现一些不可预见的状况,正好在学linux,在windows上安装了虚拟机,安装的镜像是ubuntu(乌班图)装在了虚拟机中,装在虚拟机中好处是即使 ...