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的更多相关文章

  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. Oracle闪回恢复

    Oracle的闪回功能包括 1.闪回数据库(前提 归档模式下 启用闪回数据库) mount 下 alter database archivelog; alter database flashback ...

  2. 使用Python解析豆瓣上Json格式数据

    现在的API接口多为xml或json,json解析更简洁相对xml来说 以豆瓣的API接口为例,解析返回的json数据: https://api.douban.com/v2/book/1220562 ...

  3. Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入

    一.目标 实现在Linux下用pycharm调试工具/Python开发 Linux使用vi/vim工具写Python,缺点:调试不方便,无代码提示.跳转等诸多功能. Windows使用idle/pyc ...

  4. oracle sql model从句demo

    model从句作用 sql model可以完成像EXCEL工作表的数据内容扩展.计算填充的功能 关键词解释 partition 分区关键词,白话就是分组 dimension 度量关键词,白话就是要取出 ...

  5. pyenv 安装

    sudo yum install openssl*     git clone https://github.com/yyuu/pyenv.git ~/.pyenv      echo 'export ...

  6. C语言的隐式类型转换

    看了一篇博文,该文章中有如下描述 #include <stdio.h> int main() { unsigned ; unsigned ; )) //a和b-1的结果-1都被转换为int ...

  7. linux 下后台运行python脚本

    这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log &说明:  ...

  8. Spring boot 应用打包部署

    1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定 ...

  9. Django之ORM模型

    ORM介绍 对象关系映射(Object Relational Mapping,简称ORM)模式的作用是在关系型数据库与业务实体对象之间进行映射,这使得我们不需要再去和复杂的SQL语句打交道,只需要简单 ...

  10. 解决exlicpe以debug模式启动或运行速度非常慢的问题

    该问题可能是由于eclipse和tomcat的交互而产生的, 在以debug模式启动tomcat时,发生了读取文件错误, eclipse自动设置了断点,导致tomcat不能正常启动. 解决方法如下:以 ...