我有一个asp.net MVC2应用程序需要从控制器调用Web服务。我该怎么做呢?这是一个返回Json数据的RESTful服务。如何从Controller调用Web服务?
我似乎找不到一个很好的例子。
感谢
我有一个asp.net MVC2应用程序需要从控制器调用Web服务。我该怎么做呢?这是一个返回Json数据的RESTful服务。如何从Controller调用Web服务?
我似乎找不到一个很好的例子。
感谢
你把它以同样的方式,你会在任何ASP.net应用程序做的,它没有连接到MVC的。
要么添加一个引用,并使用该(最简单的)或用手动方法去:这里是一个引导件,看到在朝向端部用于消费这样的服务(图尤其14): http://msdn.microsoft.com/en-us/magazine/dd943053.aspx
我将放在一起构成一个简单的类,它充当一个“客户端”,从URL发出一个Web请求,然后以字符串的形式返回响应。
从那里您可以使用WCF附带的JSON序列化或最好的JSON.Net库来反序列化JSON数据。您将需要创建一个简单的数据类,其结构与您期望的JSON数据相同。
您也可以将两者结合起来,让您的客户端类直接返回反序列化的对象。
我写了我自己的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您提供
希望这有助于
是有一些原因,你不能使用正常添加服务参考? – JustLoren 2010-06-17 13:11:01