我有一个asp.net MVC2应用程序需要从控制器调用Web服务。我该怎么做呢?它是一个返回Json数据的RESTful服务。
我似乎无法找到一个好榜样。
由于
答案 0 :(得分:3)
您可以像在任何ASP.net应用程序中那样调用它,它根本不连接到MVC。
添加引用并使用它(最简单)或使用手动方法:这是一个指南,请参阅最后(特别是图14)以获取此类服务: http://msdn.microsoft.com/en-us/magazine/dd943053.aspx
答案 1 :(得分:2)
我编写了自己的ActictiveResource客户端框架,允许使用者指定http提供程序和序列化提供程序。泛型activeResource类有四个主要动词(get,put,post,delete)作为调用指定资源url的方法,在cunstruction中传入。以下是从服务中获取产品的一个例子:
ActiveResource<Product> arProduct = new ActiveResource<Product>(jsoSerializer,liveHttpProv,"https://company/product/1452");
//Get verb
Product prod = arProduct.Get();
当然你也可以使用对象上的其他动词来放置,发布和删除。
arProduct.Post(prod);
代码基本上包装了底层的http post,put,get函数,并负责将有效负载序列化到对象。它是一个非常有用的组件,我一遍又一遍地使用它。可以从控制器轻松调用代码,可能值得使用IOC容器(我使用Th eUnity块)来实现提供者
希望这有帮助
答案 2 :(得分:1)
我会将一个简单的类放在一起,充当“客户端”,从URL发出Web请求,然后将响应作为字符串返回。
从那里,您可以使用WCF附带的JSON序列化或最优秀的JSON.Net库来反序列化JSON数据。您需要创建一个简单的数据类,其结构与您期望的JSON数据相同。
您也可以将两者结合起来,让您的客户端类直接返回反序列化对象。