1. 1.获取 post 请求 body 内容
  2.  
  3. [HttpPost]
  4. public string GetId()
  5. {
      //如果方法参数里面有 [FromBody],则需要重新调整内容指针,再进行读取。
  6. //Request.Content.ReadAsStreamAsync().Result.Seek(0,System.IO.SeekOrigin.Begin);
  7.   string content = Request.Content.ReadAsStringAsync().Result;
  8.   return content;
  9. }

  

方法名称 描述
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请求,异步操作。

  1. private static void SendRequest()
  2. {
  3. using (var client = new System.Net.Http.HttpClient())
  4. {
  5.  
  6. client.BaseAddress = new Uri("http://192.168.1.3:42561/");
  7. var url = "apitest/order/pager";
  8.  
  9. //添加自定义头信息
  10. client.DefaultRequestHeaders.Add("name", "wjire");
  11.  
  12. //设置头信息中的 Authorization
  13. client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("scheme", "Mima");
  14.  
  15. //PostAsJsonAsync 及上表中几个类似方法都需要引用nuget中的 Microsoft.AspNet.WebApi.Client
  16.  
  17. //Post方法一:用json格式传递参数
  18. //client.PostAsJsonAsync(url, new Person { Name = "fffff", Id = 123, Age = 100 }).ContinueWith(GetResponse);;
  19.  
  20. //Post方法二:匿名类,原理同方法一
  21. //var content = new
  22. //{
  23. // Name = "gg",
  24. // Id = 1,
  25. // Age = 1
  26. //};
  27. //client.PostAsJsonAsync(url, content).ContinueWith(GetResponse);;
  28.  
  29. //Post方法三: 原生的键值对形式传递参数
  30. //var content = new FormUrlEncodedContent(new Dictionary<string, string>
  31. // {
  32. // {"id","1" },
  33. // {"name","wjjj" },
  34. // {"age","100" }
  35. // });
  36. //client.PostAsync(url, content).ContinueWith(GetResponse);;
  37.  
  38. //Get方式
  39. //这里如果要传递参数,参数个数必须包含请求的API接口所接收的所有参数,只能多,不能少,否则无法传递.其实多了也没有意义
  40. var task = client.GetAsync(url + "?age=100&id=121&name=go1ng").ContinueWith(GetResponse);
  41.  
  42. Console.ReadLine();
  43. }
  44. }
  45.  
  46. private static void GetResponse(Task<HttpResponseMessage> obj)
  47. {
  48. var getResult = obj.Result;
  49.  
  50. //判断请求是否成功
  51. var isSuccess = getResult.IsSuccessStatusCode;
  52. if (isSuccess)
  53. {
  54. //这里当然也可以转成自定义类
  55. var readResult = getResult.Content.ReadAsAsync<dynamic>();
  56. var model = readResult.Result;
  57. Console.WriteLine(model.Age);
  58. Console.WriteLine(model.Name);
  59. Console.WriteLine(model.Id);
  60. }
  61. }

使用 HttpClient 请求 Web Api的更多相关文章

  1. .Net Core使用HttpClient请求Web API注意事项

    HttpClient 使用HttpClient可以很方便的请求Web API,但在使用时有一些需要注意的地方,不然会给你的程序带来毁灭性的问题. HttpClient是一个继承了IDisposable ...

  2. Web API WinForm使用HttpClient呼叫Web API

    前言 之前几篇文章已经介绍了 Web 与 Web API 的使用方式,接下来将介绍如何在 Windows Form 呼叫 Web API 的方法,要在 WinForm 中使用 Web API 的话,除 ...

  3. WebApi系列~实际项目中如何使用HttpClient向web api发异步Get和Post请求并且参数于具体实体类型

    回到目录 本讲比较实际,在WEB端有一个Index和Create方法,用来从web api显示实体列表数据和向api插入实体对象,这就是以往的网站,只不过是把数据持久化过程放到了web pai上面,它 ...

  4. 使用HttpClient 调用Web Api

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

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

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

  6. ajax GET和POST请求web api 的几种方式

    GET请求 1.无参数get请求 一般get请求有两种写法,一种是 $.get()   一种是$.ajax({type:"get"}), 我个人比较喜欢用后者. 下面例子主要是ge ...

  7. C# 请求Web Api 接口,返回的json数据直接反序列化为实体类

    须要的引用的dll类: Newtonsoft.Json.dll.System.Net.Http.dll.System.Net.Http.Formatting.dll Web Api接口为GET形式: ...

  8. MUI 跨域请求web api

    由于刚接触MUI框架,所以在跨域问题上花了一点时间.希望我的方式能帮你少走点弯路(大神就直接过里吧)! 首先,遇到这个问题,各种百度.其中说法最多的是将mui,js文件里的 setHeader('X- ...

  9. 【WebApi】通过HttpClient调用Web Api接口

    HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...

随机推荐

  1. CLOB型转成字符型

    //oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...

  2. Oracle用户、授权、角色管理

    创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...

  3. 毫秒级检测!你见过带GPU的树莓派吗?

    树莓派3B+英特尔神经计算棒进行高速目标检测 转载请注明作者梦里茶 代码: 训练数据预处理: https://gist.github.com/ahangchen/ae1b7562c1f93fdad1d ...

  4. Windows下安装TensorFlow

    最近学习TensorFlow,当然前提是装好框架,网上教程很多都是虚拟搭建或者是conda,从我的经验来讲,Windows目前只支持Python3.5版本安装,Python官网上有说明: 本人由于常用 ...

  5. node.js 模块化

    模块是编写稍大一点点的程序 一般就会将代码模块化 在node.js中每一个文件就是一个模块,而文件路径就是模块名 怎么使用模块? 在编写某个模块是都有三个预先定义(require,exports,mo ...

  6. EOS 开发进展速报

    Daniel Larimer 刚刚披露了 EOS 的最近开发进展,原文 :https://steemit.com/eos/@dan/ukoxz-eos-io-development-update 为了 ...

  7. 零散Linux命令

    1. # ps -ef|grep java 查询java进程 2. # kill -9 进程号 关闭指定进程

  8. 关于html文档的规范

    1. <!DOCTYPE html> 告诉浏览器该文档使用哪种html或xhtml的规范 2. 元数据中的X-UA-Compatible <meta http-equiv=" ...

  9. 获取DOM节点的几种方式

    DOM 是一个树形结构,操作一个DOM节点,实际上就是这几个操作:更新.删除.添加.遍历 在操作DOM节点之前,需要通过各种方式先拿到这个DOM节点,常用的方法有: 一.通过元素类型的方法来操作: d ...

  10. 简洁明了的插值音频重采样算法例子 (附完整C代码)

    近一段时间在图像算法以及音频算法之间来回游走. 经常有一些需求,需要将音频进行采样转码处理. 现有的知名开源库,诸如: webrtc , sox等, 代码阅读起来实在闹心. 而音频重采样其实也就是插值 ...