使用多种客户端消费WCF RestFul服务(三)——.net4.5篇
.net 4.5篇
在.net 4.5下面微软提供了System.Net.Http.dll可以非常方便的使用HTTP请求(其实是用来支持Asp.Net Web Api的,不过我们可以拿过来用)
服务仍然就还是使用第一篇的。
开发工具:Visual Studio 2013
.net版本:4.5
一、新建控制台程序:
注意:WinForm、WebForm的方式将会一样,风格还是接近0配置,个人比较讨厌繁杂的配置,所以大篇幅的web.config不在本篇讨论之列。
打开Visual Studio 2013新建控制台WCFRestFulClient45,添加对组建的引用:
注意:这里光引用上面2个还不够,还需要引用一个MVC的,如下所述:
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll
才可以使用ReadAsAsync的异步读取,而ReadAsAsync是在System.Net.Http.HttpContentExtensions类中定义的一个扩展方法。没有参数,它会使用媒体类型格式化器的默认设置,以便于解析响应体。默认格式化器支持JSON、XML和经过url编码的表单数据(Form-url-encoded data)。(Result属性的过程是线程阻塞的)
当然Newtonsoft.Json.dll还得用,他是用来序列化和反序列化JSON的,可以在这里下载得到最新版:http://json.codeplex.com/
引用完成之后的完整截图如下:
然后添加和服务端字段一致的实体类如下:
public class User
{
public string ID { get; set; }
public string Age { get; set; }
public string Name { get; set; }
}
二、新建一个辅助类:
为了更加直观看到每种操作的结果,特新建辅助类ClientHelper,千万别赋予这个类其他的想象,他仅仅只是一个普通类(绝对不是微软WCF自动生成的代理类)。添加4种操作方法:
private readonly static string baseUrl = "http://localhost:3720/UserService.svc/";
//1 ok
public static void GetPerson()
{
var strUrl = baseUrl + "GetPerson";
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync(strUrl).Result;
User u= response.Content.ReadAsAsync<User>().Result;
Console.WriteLine(u.Name);
}
//2 ok
public static void GetPersonById()
{ var strUrl = baseUrl + "GetPersonById/1";
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync(strUrl).Result;
User u = response.Content.ReadAsAsync<User>().Result;
Console.WriteLine(u.Name);
} //3 ok
public static void GetPersonPost()
{
var user = new User { ID = "" };
var strUrl = baseUrl + "GetPersonPost";
HttpClient client = new HttpClient();
var response = client.PostAsJsonAsync(strUrl, user).Result;
User u = response.Content.ReadAsAsync<User>().Result;
Console.WriteLine(u.Name);
} //4 ok
public static void GetPersonPostById()
{
var user = new User { Age = "", ID = "", Name = "zhangsan" }; ;
var strUrl = baseUrl + "GetPersonPostById";
HttpClient client = new HttpClient();
var response = client.PostAsJsonAsync(strUrl, user).Result;
User u = response.Content.ReadAsAsync<User>().Result;
Console.WriteLine(u.Name);
}
这回对照上一章,我们明显发现调用变得简单了,要POST数据就直接传递实例化好的对象进去即可,服务端可以完美的接收到参数。并且加之ReadAsAsync异步方法,返回的数据可以直接使用。
最终调用结果如:
同样,为了证明参数被传递到了WCF,我们断点调试抓图如下:
可以看出,非常轻松的完成了.net 4.5的WCF RestFul访问,但是微软的重点在于Asp.Net Web Api,当然本博客也会接下来对Asp.Net Web Api进行研究,希望大家继续关注。
本篇源代码下载:点击下载
使用多种客户端消费WCF RestFul服务(三)——.net4.5篇的更多相关文章
- 使用多种客户端消费WCF RestFul服务(二)——.net4.0篇
.net 4.0篇 在.net 4.0下面微软并没有提供类似Net.Http的Rest访问组件,而是在codeplex上面提供的WCF REST Starter Kit Preview 2 里面可以找 ...
- 使用多种客户端消费WCF RestFul服务(四)——Jquery篇
Jquery篇 互联网开发中少不了各类前端开发框架,其中JQUERY就是最流行之一,本篇我们就采用JQUERY来消费WCF RestFul服务,其中用到JSON基础知识,如果有想了解的朋友,请访问:& ...
- 使用多种客户端消费WCF RestFul服务(一)——服务端
RestFul风格的WCF既然作为跨平台.跨语言.跨技术的一种方式出现,并且在ASP.NET API流行起来之前还是架构的首选技术之一,那么我们就来简要的介绍一下WCF在各个平台客户端的操作. 开发工 ...
- Springboot & Mybatis 构建restful 服务三
Springboot & Mybatis 构建restful 服务三 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务二 2 restful ...
- WCF Restful 服务 Get/Post请求
Restful Get方式请求: Restful服务 Get请求方式:http://localhost:10718/Service1.svc/Get/A/B/C http://localhost:1 ...
- WCF Restful Post调用
一.首先建立Http的服务端,此示例的寄宿体为WindowsService,以下代码仅为WCF Restful服务代码,不包括服务启动和安装代码 1.服务契约 /// <summary> ...
- Springboot & Mybatis 构建restful 服务四
Springboot & Mybatis 构建restful 服务四 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务三 2 restful ...
- WCF Restful Service
对 Web Services.WCF 和 Restful 的扫盲可参见:https://www.cnblogs.com/scy251147/p/3382436.html 关于之前对 WCF 的学习,可 ...
- WCF Restful Service的服务
构建基于WCF Restful Service的服务 前言 传统的Asmx服务,由于遵循SOAP协议,所以返回内容以xml方式组织.并且客户端需要添加服务端引用才能使用(虽然看到网络上已经提供了这方面 ...
随机推荐
- MFC+Android模拟器 实现 自动玩“天天爱消除”
朋友用QT做了个自动玩的,觉得有意思,自己也想用MFC做个试试. 模拟器用的BlueStacks.Android SDK带的那个模拟器不知道是不是设置的问题,开游戏很卡. 用MFC建了对话框工程,配置 ...
- 解决Windows Server 2003不认U盘或移动硬盘的问题
1.进入命令提示符环境(也就是DOS) 2.进入DISKPART程序 3.输入AUTOMOUNT ENABLE指令 4.OK,下次USB硬盘接入后就可以像XP 一样自动装载了.
- 【BZOJ】2802: [Poi2012]Warehouse Store(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=2802 自己yy了一下... 每一次如果够那么就买. 如果不够,考虑之前买过的,如果之前买过的比当前花 ...
- HDU 4533 威威猫系列故事——晒被子
题目链接 扫描线可做,然后当时比赛后问虎哥,他说可以标记,然后拖了很久,今天从早上折腾到晚上,终于把两种情况写出来,分析太弱.改天扫描线,再来一次. 被子如果被y = x 穿过,可以分成两部分,上和下 ...
- url上使用#号好不好
这是一篇摘自百度站长工具的文章. 一般来说,url当中的#号是一个锚点的标志位,这样的url打开之后会将访问者的视线定位在指定位置上,令访问者直接看到网页中间的一段内容.自从推特流行开始,#号被附予了 ...
- jQuery Mobile高手必备的十大技巧和代码片段
与任何新技术一样,常常难就难在如何开始入手. 有鉴于此,我们整理出了与jQuery Mobile库有关的我认为最便利的一些技巧.方法和代码片段. 由于本文不是旨在全面介绍使用jQuery Mobile ...
- iOS移动开发周报-第21期
iOS移动开发周报-第21期 [摘要]:本期iOS移动开发周报带来如下内容:苹果iCloud中国数据转存中国电信,Swift Operators,100 个 Swift 必备 tips,FLEXLoa ...
- CUDA/OpenCL 学习资料
VS2010 NVIDIA OpenCL 开发环境配置 CUDA 在线课程 [经典培训] 全球首套中文CUDA 教程-胡文美教授主讲
- Windows Server 2012 FTP配置 后客户机一直登录不上
配置FTP时出现奇怪的问题,服务器配置完成后客户机访问FTP站点时输入用户名密码一直不对. 经多次试验后发现,默认情况下是如下图配置.将用户下次登录时必须更改密码勾掉,勾选密码永不过期即可正常登录.
- 【新产品发布】《EVC8021 RS-232<>RS-485/422 隔离接口转换器》
[数据手册下载] 1.百度云盘:(把下面蓝色连接复制到浏览器下打开) http://pan.baidu.com/s/1eQlJ0zC 2.淘宝公司的淘云盘:(点击下面连接后,需要用淘宝账户登录) ht ...