【ASP.NET Web API2】利用HttpClient调用Web API(TODO)
参照: 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
纯属记录一下遇到的问题:
我们利用HttpClient来调用自宿主方式寄宿的Web API。HttpClient定义在程序集“System.Net.Http.dll”中,还需要引用程序集“System.Net.Http.Formatting”,因为序列化请求和反序列化响应的相关类型定义在此程序集中,因为之前完全没有用过async&await 异步编程,于是跟着写了这样的一段代码
static HttpClient httpClient = new HttpClient();
static void Main(string[] args)
{
Console.WriteLine("------------初识数据------------");
GetList();
Add(new Contact() { ID="004", Name="小米", PhoneNum="1380020000" });
Console.WriteLine("------------添加一个联系人后---------------");
GetList();
Console.Read();
} /// <summary>
/// 输出联系人列表
/// </summary>
private async static void GetList()
{
HttpResponseMessage response = await httpClient.GetAsync("http://127.0.0.1:7304/api/contacts");
List<Contact> contacts = await response.Content.ReadAsAsync<List<Contact>>();
foreach (var item in contacts)
{
Console.WriteLine("{0}-{1}-{2}", item.ID, item.Name, item.PhoneNum);
}
}
/// <summary>
/// 添加
/// </summary>
/// <param name="model"></param>
private async static void Add(Contact model)
{
await httpClient.PostAsJsonAsync<Contact>("http://127.0.0.1:7304/api/contacts", model);
}
运行后悲剧了,不是我预想的结果

于是想了解一下async&await,找到很多相关文章、博客,实在是看不下去,看不懂,断点还每次跳的位置都不一样,也是醉了。于是先把async&await的问题放放
改了一下GetList()和Add();
/// <summary>
/// 输出联系人列表
/// </summary>
private static void GetList()
{
HttpResponseMessage response = httpClient.GetAsync("http://127.0.0.1:7304/api/contacts").Result;
List<Contact> contacts = response.Content.ReadAsAsync<List<Contact>>().Result;
foreach (var item in contacts)
{
Console.WriteLine("{0}-{1}-{2}", item.ID, item.Name, item.PhoneNum);
}
}
/// <summary>
/// 添加
/// </summary>
/// <param name="model"></param>
private static void Add(Contact model)
{
HttpResponseMessage response= httpClient.PostAsJsonAsync<Contact>("http://127.0.0.1:7304/api/contacts", model).Result;
}
结果:

原因是数据初始化在构造函数中,每次调用API contacts都变回原来定义的那样(基础知识差到不忍直视==!)
List<Contact> contacts;
public ContactsController()
{
contacts = new List<Contact>();
contacts.Add(new Contact() { ID = "001", Name = "小白", PhoneNum = "13529093839" });
contacts.Add(new Contact() { ID = "002", Name = "大白", PhoneNum = "13529093838" });
contacts.Add(new Contact() { ID = "003", Name = "小黑", PhoneNum = "13529088838" });
}
↑2015-04-11
【ASP.NET Web API2】利用HttpClient调用Web API(TODO)的更多相关文章
- asp.net ajax客户端框架如何调用Web Service
asp.net ajax客户端框架如何调用Web Service 1:Web Service类添加 [System.Web.Script.Services.ScriptService]特性2:需要异步 ...
- 使用HttpClient 调用Web Api
C#4.5 添加了异步调用Web Api . 如果你的项目是4.5以上版本,可以直接参考官方文档. http://www.asp.net/web-api/overview/web-api-client ...
- 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法
技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...
- ASP.NET4.0中JavaScript脚本调用Web Service 方法
环境:VS2019 .net 4.0 framework 根据教材使用ScriptManager在JavaScript中调用Web service 时,失败.现将过程和解决方法记录如下: 1.定义W ...
- ASP.NET不通过添加web引用的方式调用web service接口
尊重原著作:本文转载自http://bbs.csdn.net/topics/360223969 创建方法 //动态调用web服务 public static object InvokeWebSer(s ...
- C#工具:利用HttpClient调用WebApi
可以利用HttpClient来进行Web Api的调用.由于WebA Api的调用本质上就是一次普通的发送请求与接收响应的过程, 所有HttpClient其实可以作为一般意义上发送HTTP请求的工具. ...
- ASP.NET Core教程:在ASP.NET Core中使用HttPClient调用WebService
一.前言 在以前的一篇文章中,曾经讲述过如何在ASP.NET Core中调用WebService.但是那种方式是通过静态引用的方式去调用的,如果是在生产环境中,肯定不能使用这种方式去调用,幸运的是微软 ...
- 【WebApi】通过HttpClient调用Web Api接口
HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...
- 基于apache httpclient 调用Face++ API
简要: 本文简要介绍使用Apache HttpClient工具调用旷世科技的Face API. 前期准备: 依赖包maven地址: <!-- https://mvnrepository.com/ ...
随机推荐
- HashTable的使用,扑克牌发牌游戏
l 场景 主要实现以下功能: 1. 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃按照从小到大依次为:1-13 方块按照从小到大依次为:14-26 黑桃按 ...
- hadoop06---多线程
.1.1. 实现线程的两种方式 1.继承Thread的方式 见代码MyThreadWithExtends 2.声明实现 Runnable 接口的方式 见代码MyThreadWithImpliment ...
- PHP无限分类封装
<?php /** +------------------------------------------------ * 通用的树型类 +--------------------------- ...
- cocos2d关于glew32.lib错误(转)
应项目需要使用cocos2d-x开发,又要学习新东东了.·cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,用C++重写cocos2d-iphone引擎的一个开源项目,想了解更多的童鞋美去百 ...
- CSS 命名里面有大学问
其实迟迟不敢开始写关于样式里布局方面的心得, 因为大多数人眼中,哪需要管那么多,只需要最终效果达到了就行了呗. 然而,即使是如今国内外顶级大牛也不敢说自己是个优秀的 CSS 工程师. 一般大公司都是 ...
- 【收藏】SearchCrawler By James Holmes
转自Crawling the Web with Java By James Holmes 无需任何扩展包,可直接运行. import java.awt.*; import java.awt.event ...
- MySQL-版本及服务介绍
一.MySQL各版本 1.MySQL产品 下载地址:https://www.mysql.com/downloads/ Oracle MySQL Cloud Service(commercial) 商业 ...
- Hearbeat 工作原理
Hearbeat 原理 heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路, ...
- php数组函数-array_rand()
array_rand()函数返回数组中的一个随机键名,或者如果指定函数返回键名不止一个,则返 回一个包含随机键名的数组. array_rand(array,number); array:必需.规定数组 ...
- Eclipse Validating缓慢的优化
使用Eclipse的人基本都有这种情况,如图: 各种等待有木有,各种崩溃啊有木有,反正我是觉得挺烦的,但是也不知道是干嘛的,如果取消了,造成程序出问题,就是给自己找麻烦,我知道这个事情肯定是可以关的, ...