使用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越来越流行,有时候为了程序更加健壮,需要在插件 ...
随机推荐
- 随应潮流-基于ABP+Angulsrjs现代化应用软件开发框架(2)-abp说明
前言 上周未发布完<基于ABP+Angulsrjs现代化应用软件开发框架(1)-总体介绍> 文章后,好多朋友问了我一些ABP的问题,并且希望我开源我的项目源码,向朋友们说一下,我项目的源码 ...
- stl_algorithm算法之排序算法
排序算法: 注意:容器中必须重载 op< ,排序中stl标准中要求用小于来进行比较. 7.53.sort //全排序. 7.54.stable_sort //稳定排序.两个或两个以上的相邻且相等 ...
- 使用window.btoa和window.atob来进行Base64编码和解码
方法描述 WindowBase64.atob() 函数用来解码一个已经被base-64编码过的数据. WindowBase64.btoa() 函数 将ascii字符串或二进制数据转换成一个base ...
- PLSQL 配置设置
1.登录后默认自动选中MyObjects 默认情况下,PLSQLDeveloper登录后,Brower里会选择Allobjects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wa ...
- iOS 使用 UIMenuController 且不隐藏键盘的方法
iOS 使用 UIMenuController 且不隐藏键盘的方法 在键盘显示的时候使用 UIMenuController 弹出菜单,保持键盘显示且可输入的状态. 实现方法有 修改响应链(推荐) 遵循 ...
- 初识hadoop-历史及其家族(日志一)
1,书籍推荐: 2,Google技术带来的东西: 下一篇:JDK的安装级其中遇到的问题
- linux安装vmware tools 步骤
虚拟机 -- 安装 VMware Tools 会自动挂载光驱. 1. cd /misc/cd 2. copy 文件到临时文件夹cp VMwareTools-9.6.2-1688356.tar.gz ...
- Nginx安装lua支持
Nginx安装lua支持 需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.下载安装LuaJIT-2.0.4.tar.gz wget -c ...
- 适配器模式(Adpater Pattern)
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极.阴极 ...
- Vue声明式渲染
Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM,也就是将模板中的文本数据写进DOM中,使用 {{data}} 的格式写入.此代码都是Vue.js官网上的实例. 1. ...