使用 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接口参数标准化 ...
随机推荐
- python操作excel常用的方法
读操作模块安装 pip install xlrd 写操作模块安装 pip install xlwt xlrd读操作 1.打开excel xl = xlrd.open_workbook('test.xl ...
- C# Redis实战(七)
七.修改数据 在上一篇 C# Redis实战(六)中介绍了如何查询Redis中数据,本篇将介绍如何修改Redis中相关数据.大家都知道Redis是key-value型存储系统,所以应该可以修改key, ...
- business expressions(一)
一. 1.24/7 24/7 :twenty four hours a day, seven days a week I work 24/7.——meaing i work all the time. ...
- Java 英文面试题
1. Q: What is HashMap and Map?A: Map is Interface and Hashmap is class that implements that. 2. Q: D ...
- 笔记:Hibernate 持久化类标注示例-双向1-N关系映射
1-N关系的1端持久化类 package org.drsoft.hibernate.model.oneToMany; import java.util.Date; import java.ut ...
- ImageLoader 笔记
BitmapFactory 我们不能够通过构造函数创建Bitmap对象.如果需要将图片转成Bitmap对象加载到内存中,就需要使用BitmapFactory类.BitmapFactory跟据图片数据源 ...
- 【Python】 http客户端库requests & urllib2 以及ip地址处理IPy
requests requests是个HTTPClient库,相比于urllib,urllib2等模块比更加简洁易用 ■ get请求 作为示例,讲一下关于requests如何发起并处理一个get请求 ...
- Algorithm --> 阶乘和因子
阶乘和因子 要求:输入正整数n(1<n <101), 把阶乘n!=1x2x3x...xn分解成素因子相乘的形式,从小到大输出各个素数(2,3,5,...)的指数. 例如825=3x52x1 ...
- java基础--封装
封 装(面向对象特征之一):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处:将变化隔离:便于使用:提高重用性:安全性. 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共 ...
- 中文分词 sphni与scws
1.安装sphnixcd /usr/local/srcwget http://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gztar -zxvf ...