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

StackOverflow https://stackoverflow.com/questions/11219

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

или

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

MSXML2.СерверXMLHTTP

нравиться:

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/.

Это очень важно, иначе ваше веб-приложение зависнет и произойдет всякая странная ерунда.

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

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

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

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

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

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

Удачи...

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top