Silverlight_Rest_WCF系列之五:RestInvoker的使用

简介:

在上篇文章中我们封装了Rest请求,下面我将做一些demo给大家演示RestInvoker怎么使用。

首先是服务契约代码:

这里注意下CreateByIdAndName方法,因为有两个参数,所以bodyStyle选择wrappedRequest.也就是对Request进行Wrapped的意思。

Wrapped的效果就是Json的格式会不一致。

View Code

服务类:

 

View Code

1:调用Get,Get对应的是Query方法。

具体代码如下:

复制代码
RestInvoker.InvokeGet < Product[] > ( " http://localhost:18677/RestService.svc/Products " ,
                (datas) 
=>
                {
                    
this .Dispatcher.BeginInvoke(()  =>  {
                        MessageBox.Show(datas[
0 ].Name);
                    });
                });
复制代码

2:调用Post,Post

复制代码
Product product  =   new  Product() { ID  =  Guid.NewGuid(), Name  =   " 555 "  };
            RestInvoker.InvokePost
< Product, Product > ( " http://localhost:18677/RestService.svc/Products " ,
                product, (resultProduct) 
=>
                {
                    
this .Dispatcher.BeginInvoke(()  =>
                    {
                        MessageBox.Show(resultProduct.Name);
                    });
                });
复制代码

3:调用Post方法,对应的方法是:

public  Product CreateByIdAndName(Guid id,  string  name)
        {
            
return   new  Product() { ID  =  id, Name  =  name  +   " CreateByIdAndName "  };
        }

因为RestInvoker支持匿名类和JsonObject,所以可以像这样的调用服务。

复制代码
var data  =   new  { id  =  Guid.NewGuid(), name  =   " testIdName "  };
            
// JsonObject jo = new JsonObject();
            
// jo["id"] = Guid.NewGuid();
            
// jo["name"] = "testIdName";

            RestInvoker.InvokePost(
" http://localhost:18677/RestService.svc/ProductsByIdAndName " ,data
                , 
new  Action < string > ((result)  =>  
                {
                    
this .Dispatcher.BeginInvoke(()  =>
                    {
                        MessageBox.Show(result);
                    });
                }));
复制代码

调用Put和Delete的方法和Post一致,区别是InvokePut,InvokeDelete.

 

这里大家可以看到因为不支持跨线程,所以我们调用了this.Dispatcher.BeginInvoke.

虽然解决了问题,但是很不优雅,下篇文章就会完善RestInvoker.让它支持跨线程访问。






本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2011/05/15/2047103.html,如需转载请自行联系原作者
目录
相关文章
|
jenkins Java 持续交付
Jenkins安装与配置Windows11系统
Jenkins安装与配置Windows11系统,官网下载LTS(长期稳定版);安装需要一定时间,耐心等待就好了,基本就是一路Next即可;点击【开始使用Jenkins】访问地址:访问地址http://localhost:8080/,打开界面,配置 end ,大功告成!后面搭建部署了自动化脚本再进一步分享系统初始化配置、自动化部署配置相关内容。
479 0
Jenkins安装与配置Windows11系统
|
9月前
|
移动开发 HTML5
HTML5实现的手机验证抽奖领券效果源码
这是一款基于HTML5实现的手机验证抽奖领券效果源码。在输入框输入手机号码即可点击下方的按钮来进行抽奖游戏,中奖后还会弹出提示信息,是一款比较经典的抽奖游戏源码
288 9
|
运维 前端开发 jenkins
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化
之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个实例,容错率低 如何去解决?
1058 1
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化
|
人工智能 前端开发 大数据
千份阿里技术学习资源免费送!你想要的电子书、大会资料和资源礼包都在这
开发者社区好久没有送礼包了,阿里妹实在“憋得慌”!今天咱们送个大的,这里收录了目前为止最全的阿里系电子书、火遍业界的技术大会演讲资料、超人气系列公开课 以及 四位一体的开发者学习大礼包!
45745 2
千份阿里技术学习资源免费送!你想要的电子书、大会资料和资源礼包都在这
|
架构师 云栖大会 云计算
分享阿里云ace考试攻略 详解ACP认证考试须知
最近很多朋友都在关注阿里云ace考试,那么这个ACE证书的含金量如何?阿里云ace考试是怎么考的?下面就让认证大使来给大家介绍一下阿里云ace考试攻略,有需要的朋友进来看看吧。
814 1
分享阿里云ace考试攻略 详解ACP认证考试须知
|
云计算 开发者
开发者社区
阿里云“开发者成长计划”开放1亿元免费算力,全力打造开发者“云上第一站”。面向全年龄段开发者提供免费体验、免费学习、免费实践支持,帮助开发者轻松掌握云上技能。飞天加速,赋能数字经济时代的云计算技术人才。
QT应用编程: QTableWidget删除选中的多行与全选、取消全选
QT应用编程: QTableWidget删除选中的多行与全选、取消全选
1235 0
QT应用编程: QTableWidget删除选中的多行与全选、取消全选
|
机器学习/深度学习 人工智能 机器人
腾讯成立机器人实验室Robotics X,与Nature宣布长期合作
3 月 15 日,腾讯 AI Lab 第二届学术论坛在深圳举行,在上午的论坛开幕活动中,腾讯揭晓了两个重磅消息:成立机器人实验室 Robotic X;腾讯 AI Lab 与自然科研达成战略合作。
1027 0
腾讯成立机器人实验室Robotics X,与Nature宣布长期合作
|
机器学习/深度学习 存储 人工智能
谷歌DeepMind再度携手NHS:利用深度学习对抗失明
今天,Google DeepMind 宣布再度携手NHS,与英国知名摩尔眼科医院合作,共同打造一款机器学习系统,仅凭眼部数字扫描结果即可识别潜在普通眼部疾病风险。
707 0
谷歌DeepMind再度携手NHS:利用深度学习对抗失明