Llamar a los servicios web REST desde una página asp clásica

Me gustaría comenzar a mover nuestras capas de aplicaciones empresariales en una colección de servicios web REST. Sin embargo, la mayoría de nuestra Intranet se ha creado con ASP clásico y la mayoría de los desarrolladores en los que trabajo mantienen la progtwigción en ASP clásico. Idealmente, entonces, para que se beneficien de las ventajas de un conjunto único de API web, debería llamarse desde páginas ASP clásicas.

No tengo la menor idea de cómo hacer eso.

Podría usar una combinación de JQuery con llamadas JSON para consumir servicios REST del cliente

o

si necesita interactuar con los servicios REST desde la capa ASP, puede usar

MSXML2.ServerXMLHTTP

me gusta:

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

@ KP

En realidad, debería usar MSXML2.ServerXMLHTTP desde aplicaciones ASP / servidor. XMLHTTP solo debe usarse en el lado del cliente porque usa WinInet que no es compatible con el uso en aplicaciones de servidor / servicio.

Consulte http://support.microsoft.com/kb/290761 , preguntas 3, 4 y 5 y

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

Esto es bastante importante, de lo contrario, experimentará la ejecución de su aplicación web y todo tipo de extrañas tonterías sucediendo.

Aquí hay algunos artículos que describen cómo llamar a un servicio web desde una página ASP de clase:

  • Integración de servicios web XML de ASP.NET con aplicaciones ASP “clásicas”
  • Consumir servicios web XML en ASP clásico
  • Consumir un servicio web WSDL de ASP

Varias de las respuestas presentadas aquí parecen cubrir cómo ClassicASP se puede usar para consumir servicios web y llamadas REST.

En mi opinión, una solución más ordenada puede ser que su ClassicASP solo sirva datos en formatos REST. Deje que su código de cliente basado en navegador maneje el ‘mashup’ si es posible. Debería poder hacer esto sin incorporar ningún otro componente ASP.

Por lo tanto, así es como simularía un nuevo y shiny soporte REST en ClassicASP:

  1. proporcionar una sola página web ASP que actúa como plataforma de aterrizaje
  2. La plataforma de aterrizaje manejará dos parámetros: verbo y URL, más un conjunto de contenidos de formulario
  3. Utilice algún tipo de bloque de interruptores para inspeccionar el URL y dirigir el verbo (y el contenido del formulario) a un manejador relevante
  4. El controlador procesará el verbo (PUT / POST / GET / DELETE) junto con el contenido del formulario, devolviendo un código de éxito / error más datos según corresponda.
  5. Su plataforma de aterrizaje inspeccionará el código de éxito / falla y devolverá el estado HTTP respectivo más los datos devueltos

Se beneficiaría de una clase de soporte que decodifica / codifica los datos de formulario de / a JSON, ya que eso facilitará su implementación en el lado del cliente (y posiblemente optimizará el volumen de datos pasados). Vea la conversación aquí en Any good libraries para analizar JSON en Classic ASP?

Por último, en el lado del cliente, proporcione un método que tome Verb, Url y carga útil de datos. A corto plazo, el método cotejará los parámetros y los enviará a su plataforma de aterrizaje. A más largo plazo (una vez que se aleja de ASP clásico), su método puede enviar los datos a la url “real”.

Buena suerte…

Todo lo que necesitas es un cliente HTTP. En .Net, WebRequest funciona bien. Para ASP clásico, necesitará un componente específico como este .

Otra posibilidad es utilizar el objeto COM WinHttp utilizando el objeto COM WinHttpRequest .

WinHttp fue diseñado para ser utilizado desde el código del servidor.

Otra posible solución es escribir una DLL .NET que haga las llamadas y devuelva los resultados (tal vez envuelva algo como RESTSharp, dele una API simple personalizada a sus necesidades). Luego registra la DLL como una DLL COM y la usa en su código ASP a través del método CreateObject.

He hecho esto para cosas como la creación de JWT firmados y contraseñas de salting y hash. Funciona muy bien (mientras trabajas como un loco para reescribir el ASP).