28 Stimmen

Aufrufen von REST-Webdiensten von einer klassischen Asp-Seite aus

Ich möchte damit beginnen, unsere Anwendungsgeschäftsschichten in eine Sammlung von REST-Webdiensten zu überführen. Der größte Teil unseres Intranets wurde jedoch mit klassischem ASP erstellt, und die meisten der Entwickler, mit denen ich arbeite, programmieren weiterhin in klassischem ASP. Damit sie von den Vorteilen eines einzigartigen Satzes von Web-APIs profitieren können, müssten diese im Idealfall von klassischen ASP-Seiten aus aufgerufen werden.

Ich habe nicht die geringste Ahnung, wie man das macht.

33voto

KP. Punkte 2088

Sie können eine Kombination aus JQuery und JSON-Aufrufen verwenden, um REST-Dienste vom Client aus zu nutzen

oder

wenn Sie von der ASP-Schicht aus mit den REST-Diensten interagieren müssen, können Sie

MSXML2.ServerXMLHTTP

mögen:

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

3 Stimmen

Was ist, wenn für meinen REST-Dienst eine grundlegende Authentifizierung erforderlich ist? Was würde sich dadurch bei der zweiten Methode des Aufrufs aus dem klassischen ASP ändern?

10voto

Kev Punkte 115293

@ KP

Sie sollten eigentlich MSXML2.ServerXMLHTTP von ASP/Server-Anwendungen. XMLHTTP sollte nur clientseitig verwendet werden, da es WinInet verwendet, das für die Verwendung in Server-/Dienstanwendungen nicht unterstützt wird.

Siehe http://support.microsoft.com/kb/290761 die Fragen 3, 4 und 5 und

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

Dies ist sehr wichtig, da sich sonst Ihre Webanwendung aufhängt und allerlei seltsamer Unsinn passiert.

6voto

SitWalkStand Punkte 1036

Hier finden Sie einige Artikel, in denen beschrieben wird, wie man einen Webdienst von einer ASP-Seite der Klasse aufruft:

3voto

ianmayo Punkte 2148

Einige der hier vorgestellten Antworten scheinen sich darauf zu beziehen, wie ClassicASP für die Nutzung von Web-Services und REST-Aufrufen verwendet werden kann.

Meiner Meinung nach kann eine ordentlichere Lösung für Ihre ClassicASP sein, nur Daten in REST-Formaten zu dienen. Lassen Sie Ihren Browser-basierten Client-Code das "Mashup" handhaben, wenn möglich. Sie sollten in der Lage sein, dies zu tun, ohne irgendwelche anderen ASP-Komponenten zu integrieren.

Also, hier ist, wie ich glänzend neue REST-Unterstützung in ClassicASP mockup würde:

  1. eine einzelne ASP-Webseite bereitstellen, die als Landingpad dient
  2. Der Landing Pad verarbeitet zwei Parameter: Verb und URL, sowie eine Reihe von Formularinhalten
  3. Verwenden Sie eine Art Schalterblock, der die URL inspiziert und das Verb (und den Formularinhalt) an einen entsprechenden Handler weiterleitet
  4. Der Handler verarbeitet dann das Verb (PUT/POST/GET/DELETE) zusammen mit dem Inhalt des Formulars und gibt einen Erfolgs-/Misserfolgscode sowie gegebenenfalls Daten zurück.
  5. Ihr Landing Pad prüft den Erfolgs-/Fehlercode und gibt den entsprechenden HTTP-Status sowie alle zurückgegebenen Daten zurück

Sie würden von einer Unterstützungsklasse profitieren, die die Formulardaten von/nach JSON dekodiert/kodiert, da dies Ihre clientseitige Implementierung vereinfacht (und potenziell das Volumen der übergebenen Daten rationalisiert). Siehe die Konversation hier unter Alle guten Bibliotheken für das Parsen von JSON in Classic ASP?

Schließlich sollte auf der Client-Seite eine Methode bereitgestellt werden, die ein Verb, eine Url und eine Daten-Nutzlast annimmt. Kurzfristig sammelt die Methode die Parameter und leitet sie an Ihr Landing Pad weiter. Längerfristig (sobald Sie von Classic ASP weggehen) kann Ihre Methode die Daten an die "echte" URL senden.

Viel Glück...

1voto

grahamesd Punkte 4403

Eine andere mögliche Lösung besteht darin, eine .NET-DLL zu schreiben, die die Aufrufe tätigt und die Ergebnisse zurückgibt (vielleicht so etwas wie RESTSharp - geben Sie ihr eine einfache, an Ihre Bedürfnisse angepasste API). Dann registrieren Sie die DLL als COM-DLL und verwenden sie in Ihrem ASP-Code über die Methode CreateObject.

Ich habe dies für Dinge wie die Erstellung signierter JWTs und das Salzen und Hashing von Passwörtern getan. Es funktioniert gut (während Sie wie verrückt arbeiten, um die ASP umzuschreiben).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X