Domanda

Vorrei iniziare a spostare i livelli aziendali delle nostre applicazioni in una raccolta di servizi Web REST.Tuttavia, la maggior parte della nostra Intranet è stata creata utilizzando ASP classico e la maggior parte degli sviluppatori per cui lavoro continua a programmare in ASP classico.Idealmente, quindi, per poter beneficiare dei vantaggi di un set unico di API Web, dovrebbe essere chiamato dalle pagine ASP classiche.

Non ho la minima idea di come farlo.

È stato utile?

Soluzione

È possibile utilizzare una combinazione di JQuery con chiamate JSON per utilizzare i servizi REST dal client

O

se devi interagire con i servizi REST dal livello ASP puoi utilizzare

MSXML2.ServerXMLHTTP

Piace:

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

Altri suggerimenti

@KP

Dovresti effettivamente usare MSXML2.ServerXMLHTTP da applicazioni ASP/lato server. XMLHTTP deve essere utilizzato solo sul lato client perché utilizza WinInet che non è supportato per l'uso nelle app server/di servizio.

Vedere http://support.microsoft.com/kb/290761, domande 3, 4 e 5 e

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

Questo è abbastanza importante, altrimenti potresti riscontrare che la tua app Web si blocca e succedono tutti i tipi di strane sciocchezze.

Di seguito sono riportati alcuni articoli che descrivono come chiamare un servizio Web da una pagina ASP di classe:

Alcune delle risposte qui presentate sembrano coprire il modo in cui ClassicASP può essere utilizzato per utilizzare servizi Web e chiamate REST.

A mio avviso, una soluzione più ordinata potrebbe essere che il tuo ClassicASP serva solo i dati nei formati REST.Lascia che il codice client basato su browser gestisca il "mashup", se possibile.Dovresti essere in grado di farlo senza incorporare altri componenti ASP.

Quindi, ecco come creerei il nuovo brillante supporto REST in ClassicASP:

  1. fornire un'unica pagina Web ASP che funge da piattaforma di destinazione
  2. La piattaforma di atterraggio gestirà due parametri:verbo e URL, oltre a una serie di contenuti del modulo
  3. Utilizzare una sorta di blocco switch, ispezionare l'URL e indirizzare il verbo (e il contenuto del modulo) a un gestore pertinente
  4. Il gestore elaborerà quindi il verbo (PUT/POST/GET/DELETE) insieme al contenuto del modulo, restituendo un codice di successo/fallimento più i dati appropriati.
  5. Il tuo landing pad ispezionerà il codice di successo/fallimento e restituirà il rispettivo stato HTTP più eventuali dati restituiti

Trarrai vantaggio da una classe di supporto che decodifica/codifica i dati del modulo da/a JSON, poiché ciò faciliterà l'implementazione lato client (e potenzialmente semplificherà il volume di dati passati).Vedi la conversazione qui su Qualche buona libreria per l'analisi di JSON in ASP classico?

Infine, sul lato client, fornire un metodo che accetti un payload di verbo, URL e dati.A breve termine il metodo raccoglierà i parametri e li inoltrerà alla tua piattaforma di atterraggio.A lungo termine (una volta che ti allontani da ASP classico) il tuo metodo può inviare i dati all'URL "reale".

Buona fortuna...

Un'altra possibile soluzione è scrivere una DLL .NET che effettui le chiamate e restituisca i risultati (magari racchiudi qualcosa come RESTSharp: forniscigli una semplice API personalizzata in base alle tue esigenze).Quindi registri la DLL come DLL COM e la usi nel tuo codice ASP tramite il metodo CreateObject.

L'ho fatto per cose come la creazione di JWT firmati e il salting e l'hashing delle password.Funziona bene (mentre lavori come un matto per riscrivere l'ASP).

Tutto ciò di cui hai bisogno è un client HTTP.In .Net, WebRequest funziona bene.Per ASP classico, avrai bisogno di un componente specifico come Questo.

Un'altra possibilità è utilizzare l'oggetto COM WinHttp Utilizzo dell'oggetto COM WinHttpRequest.

WinHttp è stato progettato per essere utilizzato dal codice del server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top