使用 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接口参数标准化 ...
随机推荐
- CLOB型转成字符型
//oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...
- Oracle用户、授权、角色管理
创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...
- 毫秒级检测!你见过带GPU的树莓派吗?
树莓派3B+英特尔神经计算棒进行高速目标检测 转载请注明作者梦里茶 代码: 训练数据预处理: https://gist.github.com/ahangchen/ae1b7562c1f93fdad1d ...
- Windows下安装TensorFlow
最近学习TensorFlow,当然前提是装好框架,网上教程很多都是虚拟搭建或者是conda,从我的经验来讲,Windows目前只支持Python3.5版本安装,Python官网上有说明: 本人由于常用 ...
- node.js 模块化
模块是编写稍大一点点的程序 一般就会将代码模块化 在node.js中每一个文件就是一个模块,而文件路径就是模块名 怎么使用模块? 在编写某个模块是都有三个预先定义(require,exports,mo ...
- EOS 开发进展速报
Daniel Larimer 刚刚披露了 EOS 的最近开发进展,原文 :https://steemit.com/eos/@dan/ukoxz-eos-io-development-update 为了 ...
- 零散Linux命令
1. # ps -ef|grep java 查询java进程 2. # kill -9 进程号 关闭指定进程
- 关于html文档的规范
1. <!DOCTYPE html> 告诉浏览器该文档使用哪种html或xhtml的规范 2. 元数据中的X-UA-Compatible <meta http-equiv=" ...
- 获取DOM节点的几种方式
DOM 是一个树形结构,操作一个DOM节点,实际上就是这几个操作:更新.删除.添加.遍历 在操作DOM节点之前,需要通过各种方式先拿到这个DOM节点,常用的方法有: 一.通过元素类型的方法来操作: d ...
- 简洁明了的插值音频重采样算法例子 (附完整C代码)
近一段时间在图像算法以及音频算法之间来回游走. 经常有一些需求,需要将音频进行采样转码处理. 现有的知名开源库,诸如: webrtc , sox等, 代码阅读起来实在闹心. 而音频重采样其实也就是插值 ...