Как вызвать веб-сервис из контроллера? - PullRequest
1 голос
/ 17 июня 2010

У меня есть приложение asp.net MVC2, которое должно вызывать веб-сервис с контроллера. Как мне это сделать? Это RESTful-сервис, который возвращает данные Json.

Не могу найти хороший пример.

Спасибо

Ответы [ 3 ]

3 голосов
/ 17 июня 2010

Вы называете это так же, как в любом приложении ASP.net, оно вообще не подключено к MVC.

Либо добавьте ссылку и используйте ее (проще всего), либо воспользуйтесь ручным методом: вот руководство, смотрите в конце (в частности, на рис. 14) потребление таких услуг: http://msdn.microsoft.com/en-us/magazine/dd943053.aspx

2 голосов
/ 17 июня 2010

Я написал свою собственную клиентскую среду 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 (я использую блок eUnity), чтобы установить ваших провайдеров

Надеюсь, это поможет

1 голос
/ 17 июня 2010

Я бы собрал простой класс, который действует как «клиент», который делает веб-запрос с URL, а затем возвращает ответ в виде строки.

Оттуда вы можете десериализовать данные JSON, используя сериализацию JSON, поставляемую с WCF, или самую превосходную библиотеку JSON.Net .Вам нужно будет создать простой класс данных, структурированный таким же образом, как и данные JSON, которые вы ожидаете вернуть.

Вы также можете объединить эти два класса, и ваш клиентский класс вернет десериализованный объект напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...