Вызов веб-служб REST из классической страницы asp

Я'хотел бы начать перемещать бизнес-слои нашего приложения в набор веб-сервисов REST. Однако большая часть нашего интранета была построена с использованием Classic ASP, и большинство разработчиков, где я работаю, продолжают программировать на Classic ASP. Поэтому в идеале, чтобы они могли воспользоваться преимуществами уникального набора веб-интерфейсов API, его нужно было бы вызывать со страниц Classic ASP.

Я не имею ни малейшего представления о том, как это сделать.

Решение

Вы можете использовать комбинацию JQuery с вызовами JSON для потребления REST-сервисов с клиента

или

если вам нужно взаимодействовать с REST-сервисами из слоя ASP, вы можете использовать

MSXML2.ServerXMLHTTP

например:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "GET", "Rest_URI", False
HttpReq.send
Комментарии (1)

KP

Вы должны на самом деле использовать 'MSXML2. ServerXMLHTTP' от приложений стороны ASP/сервера. 'XMLHTTP' должен только быть используемой стороной клиента, потому что это использует WinInet, который не поддержан для использования в приложениях для сервера/обслуживания.

Посмотрите http://support.microsoft.com/kb/290761, вопросы 3, 4 & 5 и

http://support.microsoft.com/kb/238425/.

Это довольно важно, иначе you' ll испытывают Ваше веб-вывешивание приложения и все виды странного продолжения ерунды.

Комментарии (0)

Вот несколько статей, описывающих, как вызвать веб-службу из ASP-страницы класса:

Комментарии (0)

Много ответов, представленных здесь, кажется, касаются, как ClassicASP может использоваться, чтобы потреблять веб-сервисы & требования ОТДЫХА.

По-моему, более опрятное решение может быть для Вашего ClassicASP, чтобы просто служить данным в форматах ОТДЫХА. Позвольте своему основанному на браузере клиенту закодировать, обращаются с ' mashup' если это возможно. Вам необходимо сделать это, не включая никакие другие компоненты ASP.

Так, here' s, как я был бы макет новейшая поддержка ОТДЫХА в ClassicASP:

  1. обеспечьте единственную веб-страницу ASP, которая действует как посадочная площадка
  2. Посадочная площадка будет обращаться с двумя параметрами: глагол и URL, плюс ряд содержания формы
  3. Используйте некоторый блок выключателя, осматривают URL и направляют глагол (и содержание формы) соответствующему укладчику
  4. Укладчик тогда обработает глагол (ПОМЕЩАЛ/ОТПРАВЛЯЛ/ПОЛУЧАЛ/УДАЛЯЛ) вместе с содержанием формы, возвращая кодекс успеха/неудачи плюс данные как соответствующий.
  5. Ваша посадочная площадка осмотрит кодекс успеха/неудачи и возвратит соответствующий статус HTTP плюс любые возвращенные данные

Вы извлекли бы выгоду из класса поддержки, который расшифровывает/кодирует данные о форме из JSON, так как это ослабит Ваше клиентское внедрение (и потенциально оптимизирует объем переданных данных). Посмотрите разговор здесь в Какие-либо хорошие библиотеки для парсинга JSON в Классическом ASP?

Наконец, в клиентском, предоставьте метод, который берет Глагол, URL и полезный груз данных. В ближайшей перспективе метод сопоставит параметры и отправит им Вашей посадочной площадке. В дальнейшей перспективе (как только Вы переключаетесь далеко от Классического ASP) Ваш метод может послать данные в ' real' URL.

Удача...

Комментарии (0)

Другое возможное решение состоит в том, чтобы написать.NET DLL, который делает звонки и возвращается, результаты (возможно, обертывают что-то как RESTSharp - дают ему простой API, настроенный к Вашим потребностям). Тогда Вы регистрируете DLL как COM DLL и используете его в Вашем кодексе ASP с помощью метода CreateObject.

I' ve, сделанный это для вещей как создание подписанного JWTs и соление и хеширование паролей. Это работает приятно (в то время как Вы работаете как сумасшедший, чтобы переписать ASP).

Комментарии (0)

Все, что вам нужно, - это HTTP-клиент. В .Net хорошо работает WebRequest. Для классического ASP вам понадобится специальный компонент, например вот этот.

Комментарии (0)

Другая возможность состоит в том, чтобы использовать объект WinHttp COM [Используя Объект WinHttpRequest COM] [1].

WinHttp был разработан, чтобы использоваться из кодекса сервера.

[1]: http://msdn.microsoft.com/en-us/library/aa384079 (Против 85) .aspx

Комментарии (0)