Вызов веб-служб REST с классической страницы asp
Я хотел бы начать перемещать наши бизнес-уровни приложений в коллекцию веб-сервисов REST. Тем не менее, большая часть нашей интрасети была построена с использованием классического ASP и большинства разработчиков, где я продолжаю программировать в классическом ASP. В идеале, для того, чтобы они могли воспользоваться преимуществами уникального набора веб-API, его нужно было бы вызывать из классических страниц ASP.
Я не имею ни малейшего представления, как это сделать.
Ответы
Ответ 1
Вы можете использовать комбинацию JQuery с вызовами JSON для использования служб REST с клиента
или
если вам нужно взаимодействовать с службами REST из уровня ASP, вы можете использовать
MSXML2.ServerXMLHTTP
как:
Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "GET", "Rest_URI", False
HttpReq.send
Ответ 2
@КП
Фактически вы должны использовать MSXML2.ServerXMLHTTP
для ASP/серверных приложений. XMLHTTP
следует использовать только на стороне клиента, поскольку он использует WinInet, который не поддерживается для использования в приложениях сервера/службы.
См. http://support.microsoft.com/kb/290761, вопросы 3, 4 и 5 и
http://support.microsoft.com/kb/238425/.
Это очень важно, иначе вы будете испытывать зависание своего веб-приложения и всевозможные странные ерунды.
Ответ 3
Вот несколько статей, описывающих вызов веб-службы с ASP-страницы класса:
Ответ 4
В приведенном ниже номере представлены ответы на вопрос, как ClassicASP может использоваться для использования веб-сервисов и вызовов REST.
На мой взгляд, более тонкое решение может быть для вашего ClassicASP просто для передачи данных в форматах REST. Пусть ваш браузерный код клиента обрабатывает "mashup", если это возможно. Вы должны иметь возможность сделать это без использования каких-либо других компонентов ASP.
Итак, вот как я буду макетировать новую поддержку REST в ClassicASP:
- предоставить единую веб-страницу ASP, которая действует как посадочная площадка
- Посадочная площадка будет обрабатывать два параметра: глагол и URL, плюс набор содержимого формы
- Используйте какой-то блок переключателей, проверяя URL-адрес и направляя глагол (и содержимое формы) на соответствующий обработчик
- Затем обработчик обрабатывает глагол (PUT/POST/GET/DELETE) вместе с содержимым формы, возвращая код успеха/отказа плюс данные по мере необходимости.
- Ваша посадочная площадка проверит код успеха/отказа и вернет соответствующий статус HTTP плюс любые возвращенные данные.
Вам будет полезен класс поддержки, который декодирует/кодирует данные формы из/в JSON, поскольку это облегчит вашу клиентскую реализацию (и потенциально упростит объем переданных данных). См. Беседу здесь в Любые хорошие библиотеки для разбора JSON в классическом ASP?
Наконец, на стороне клиента укажите метод, который принимает полезную нагрузку Verb, Url и data. В краткосрочной перспективе метод будет сопоставлять параметры и пересылать их на вашу посадочную площадку. В более долгосрочной перспективе (как только вы отключаетесь от классического ASP) ваш метод может отправить данные в "настоящий" URL.
Удачи...
Ответ 5
Все, что вам нужно, это HTTP-клиент. В .Net WebRequest работает хорошо. Для классического ASP вам понадобится конкретный компонент, например этот.
Ответ 6
Другая возможность заключается в использовании объекта COM WinHttp Использование COM-объекта WinHttpRequest.
WinHttp был разработан для использования с кодом сервера.
Ответ 7
Еще одно возможное решение - написать .NET DLL, которая делает вызовы и возвращает результаты (возможно, обернуть что-то вроде RESTSharp - дать ему простой API, настроенный для ваших нужд). Затем вы регистрируете DLL как COM-DLL и используете ее в своем ASP-коде через метод CreateObject.
Я делал это для таких вещей, как создание подписанных JWT и солевых и хеширующих паролей. Он работает красиво (пока вы работаете как сумасшедший, чтобы переписать ASP).