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,如需转载请自行联系原作者
目录
相关文章
|
开发框架 .NET 数据库连接
WCF基础教程——vs2013创建wcf应用程序
WCF基础教程——vs2013创建wcf应用程序
177 0
WCF基础教程——vs2013创建wcf应用程序