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

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

Я не знаю, как это сделать.

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

или

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

MSXML2.ServerXMLHTTP

как:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP") HttpReq.open "GET", "Rest_URI", False HttpReq.send 

@ КП

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

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

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

Это очень важно, иначе вы будете испытывать зависание своего веб-приложения и всевозможные странные глупости.

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

  • Интеграция ASP.NET XML Web Services с приложениями «Classic» ASP
  • Использование веб-служб XML в classическом ASP
  • Использование WSDL Webservice из ASP

Ряд ответов, представленных здесь, описывают, как ClassicASP может использоваться для использования вызовов веб-сервисов и REST.

На мой взгляд, более тонкое решение может быть для вашего ClassicASP просто для передачи данных в форматах REST. Пусть ваш браузерный код клиента обрабатывает «mashup», если это возможно. Вы должны иметь возможность сделать это без использования каких-либо других компонентов ASP.

Итак, вот как я буду макетировать блестящую новую поддержку REST в ClassicASP:

  1. предоставить единую веб-страницу ASP, которая действует как посадочная площадка
  2. Посадочная площадка будет обрабатывать два параметра: глагол и URL, а также набор содержимого формы
  3. Используйте какой-то блок переключателей, проверяя URL-адрес и направляя глагол (и содержимое формы) на соответствующий обработчик
  4. Обработчик затем обрабатывает глагол (PUT / POST / GET / DELETE) вместе с содержимым формы, возвращая код успеха / отказа плюс данные, если это необходимо.
  5. Ваша посадочная площадка проверит код успеха / отказа и вернет соответствующий статус HTTP плюс любые возвращенные данные

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

Наконец, на стороне клиента укажите метод, который использует полезную нагрузку Verb, Url и data. В краткосрочной перспективе метод будет сопоставлять параметры и пересылать их на вашу посадочную площадку. В более долгосрочной перспективе (как только вы отключаетесь от classического ASP) ваш метод может отправить данные в «настоящий» URL.

Удачи…

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

Другая возможность – использовать объект COM WinHttp с помощью COM-объекта WinHttpRequest .

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

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

Я сделал это для таких вещей, как создание подписанных JWT и солевых и хеширующих паролей. Он работает красиво (пока вы работаете как сумасшедший, чтобы переписать ASP).

  • Шаблоны для компенсации отсутствия наследования в SOA
  • Писатель тела сообщения для типа Java, class myPackage.B и тип носителя MIME, приложение / октет-stream не были найдены
  • Как установить тайм-аут для клиента веб-службы JAX-WS?
  • Тип содержимого text / html; charset = UTF-8 ответного сообщения не соответствует типу содержимого привязки (text / xml; charset = utf-8)
  • Понимание CORS
  • Как сделать вызов веб-службы SOAP из classа Java?
  • Получить / отправить в веб-службу RESTful
  • Веб-служба и служба WCF
  • Могу ли я иметь необязательный параметр для веб-службы ASP.NET SOAP
  • Преобразование BufferedInputStream в изображение
  • Сертификат клиента SSL в Maven
  • Давайте будем гением компьютера.