如何从Controller调用Web服务?

时间:2010-06-17 13:07:27

标签: c# asp.net asp.net-mvc asp.net-mvc-2

我有一个asp.net MVC2应用程序需要从控制器调用Web服务。我该怎么做呢?它是一个返回Json数据的RESTful服务。

我似乎无法找到一个好榜样。

由于

3 个答案:

答案 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数据相同。

您也可以将两者结合起来,让您的客户端类直接返回反序列化对象。