使用HttpClient 调用Web Api
C#4.5 添加了异步调用Web Api 。
如果你的项目是4.5以上版本,可以直接参考官方文档。
http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client
现在项目使用的是C# 4.0 ,需要对HttpClient 进行修改。
当然了你要先添加两个引用 Microsoft.Net.Http和Microsoft.AspNet.WebApi.Client
下面是改造后的HttpClient
public class ResultMessage
{
public string Code { get; set; }
public string Message { get; set; }
public string Content { get; set; }
} public class HttpClientHelper
{
public static string RequestUrl = "http://localhost:1282/"; /// <summary>
/// HttpClient实现Get请求
/// </summary>
public static ResultMessage Get(string url)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(RequestUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); Task<HttpResponseMessage> response = client.GetAsync(url);
var resultMsg = new ResultMessage();
if (response.Result.IsSuccessStatusCode)
{
Task<string> content = response.Result.Content.ReadAsStringAsync();
string resultjson = content.Result;
resultMsg = JsonConvert.DeserializeObject<ResultMessage>(resultjson);
Console.WriteLine("{0}\t{1}\t{2}", resultMsg.Code, resultMsg.Message, resultMsg.Content);
}
else
{
resultMsg.Code = response.Result.StatusCode.ToString();
resultMsg.Message = response.Result.ReasonPhrase;
Console.WriteLine("{0} ({1})", (int) response.Result.StatusCode, response.Result.ReasonPhrase);
} return resultMsg;
}
} /// <summary>
/// HttpClient实现Post请求
/// 执行服务方法
/// </summary>
public static ResultMessage Post(string code, string name)
{
string url = RequestUrl + "api/Biz/Exec"; using (var client = new HttpClient())
{
client.BaseAddress = new Uri(RequestUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{"code",code}
{"name",name},
});
var resultMsg = new ResultMessage();
Task<HttpResponseMessage> response = client.PostAsync(url, content);
//延时处理
if (response.Result.IsSuccessStatusCode)
{
Task<string> con = response.Result.Content.ReadAsStringAsync();
string resultjson = con.Result;
resultMsg = JsonConvert.DeserializeObject<ResultMessage>(resultjson);
}
else
{
resultMsg.Code = response.Result.StatusCode.ToString();
resultMsg.Message = response.Result.ReasonPhrase;
} return resultMsg;
}
}
}
使用HttpClient 调用Web Api的更多相关文章
- 【ASP.NET Web API2】利用HttpClient调用Web API(TODO)
参照: 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 纯属记录一下遇到的问题: 我们利用HttpClient来调用自宿主方式寄宿的Web API.HttpCl ...
- 【WebApi】通过HttpClient调用Web Api接口
HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...
- 【ASP.NET Web API教程】3.2 通过.NET客户端调用Web API(C#)
原文:[ASP.NET Web API教程]3.2 通过.NET客户端调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...
- 通过.NET客户端调用Web API(C#)
3.2 Calling a Web API From a .NET Client (C#) 3.2 通过.NET客户端调用Web API(C#) 本文引自:http://www.asp.net/web ...
- WebApi系列~通过HttpClient来调用Web Api接口
回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...
- 通过HttpClient来调用Web Api接口
回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...
- Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口
1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...
- 【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)
原文:[ASP.NET Web API教程]3.3 通过WPF应用程序调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...
- Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码
微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...
随机推荐
- linux 下 启动oracle
[root@csyang ~]# su - oracle #首先su到oracle用户 [oracle@csyang ~]$ sqlplus sys/passwd as sysdba #使用sys用户 ...
- 金山助手流氓软件-被进程sjk_daemon.exe坑死
修改完Android工程代码,进入调试阶段时DDMS中报错:The connection to adb is down, and a severe error has occured. 由于之前也碰到 ...
- SQL SERVER大话存储结构(1)_数据页类型及页面指令分析
如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所有.望各位支持! SQLServer的数据页大 ...
- iOS-工程和工作空间、静态库和框架之间的关系
使用Xcode创建的工程Project是单独分开的,如果想要几个工程同时存在,可以通过创建工作空间Workspace.工作空间是对各工程的集合,工程文件名的后缀为.xcodeproj,工作空间文件名的 ...
- 基于django做HTTP代理服务器
计算机网络的一次小实验,最后一共用了不到100行 实现了: a) 网站过滤:允许/不允许访问某些网站: b) 用户过滤:支持/不支持某些用户访问外部网站: c) 网站引导:将用户对某个网站的访问引导至 ...
- VR全景智慧城市——“海市蜃楼”般的逛街体验
<史记·天官书>:"海旁蜃气像楼台:广野气成宫阙然." 海市蜃楼,简称蜃景,是一种因为光的折射和全反射而形成的自然现象,是地球上物体反射的光经大气折射而形成的虚像. 2 ...
- MVC中的Ajax与增删改查
自入手新项目以来,一直处于加班状态,博客也有两周没更,刚刚完成项目的两个模组,稍有喘息之机,写写关于项目中 的增删改查,这算是一个老生常谈的问题了,就连基本的教材书上都有.刚看书的时候,以为 没什么可 ...
- 当一个JavaScripter初次进入PHP的世界,他将看到这样的风景
本文将从以下11点介绍javascript和PHP在基础语法和基本操作上的异同: 1.数据类型的异同 2.常量和变量的定义的不同,字符串连接运算符不同 3.对象的创建方法的不同 4.PHP与JS在变 ...
- CSS3如何实现超出指定文本以省略号显示效果
不做前端很久了,今天从重构师那里了解到CSS3已经可以实现很多以往必须通过JS才能实现的效果,如渐变,阴影,自动截断文本展示省略号等等强大效果,而且这些功能日渐成熟,已经大量用于生产环境.H5真的日渐 ...
- Linux parent process and child process when 'sudo'
如果在一般用户下如user,执行sudo命令,会产生两个进程. ps -ef | grep Container root 4305 643 0 16:37 pts/39 00:00:00 sudo . ...