2010-06-17 124 views
1

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

我似乎找不到一个很好的例子。

感谢

+1

是有一些原因,你不能使用正常添加服务参考? – JustLoren 2010-06-17 13:11:01

回答

3

你把它以同样的方式,你会在任何ASP.net应用程序做的,它没有连接到MVC的。

要么添加一个引用,并使用该(最简单的)或用手动方法去:这里是一个引导件,看到在朝向端部用于消费这样的服务(图尤其14): http://msdn.microsoft.com/en-us/magazine/dd943053.aspx

1

我将放在一起构成一个简单的类,它充当一个“客户端”,从URL发出一个Web请求,然后以字符串的形式返回响应。

从那里您可以使用WCF附带的JSON序列化或最好的JSON.Net库来反序列化JSON数据。您将需要创建一个简单的数据类,其结构与您期望的JSON数据相同。

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

2

我写了我自己的ActictiveResource客户端框架,它允许消费者指定http提供者和序列化提供者。泛型activeResource类具有四个主要动词(get,put,post,delete)作为方法,它调用指定的资源url,并在cunstruction传入。该fololwing是从德的服务得到一个产品项目的例子:

ActiveResource<Product> arProduct = new ActiveResource<Product>(jsoSerializer,liveHttpProv,"https://company/product/1452"); 

//Get verb 
Product prod = arProduct.Get(); 

当然,你也可以使用对象的其他动词PUT,POST和删除。

arProduct.Post(prod); 

该代码基本上包装了底层http post,put,get函数并负责将有效负载序列化为对象。它一直是我反复使用的非常有用的组件。该代码可以从控制器很容易调用,它可能是值得使用IOC容器(我用的钍eUnity块)instatiate您提供

希望这有助于