Chiamare il metodo WebApi da VBScript

Ho il seguente metodo web API nel mio controller

public HttpResponseMessage PostUpdateCardStatus(CardholderRequest cardholderRequest) { var cardId = cardholderRequest.CardId; switch (cardholderRequest.Action) { case "Enable": break; case "Disable": break; } var cardholderResponse = new CardholderResponse(cardholderRequest.RequestId) { Status = "OK" }; var response = Request.CreateResponse(HttpStatusCode.OK, cardholderResponse); return response; } 

Questo è come lo chiamo da un’app console .NET

  using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:55208/"); var request = new CardholderRequest() { RequestId = Guid.NewGuid().ToString(), CardId = "123456", Action = "Enable", LoginId = "tester", Password = "tester", }; var response = client.PostAsJsonAsync("api/cardholders", request).Result; if (response.IsSuccessStatusCode) { var cardholderResponse = response.Content.ReadAsAsync().Result; } 

Come è ansible effettuare la stessa chiamata usando VBScript?

Ho provato googling, ma non ho incontrato alcun esempio solido di chiamare i metodi API Web da script VB.

Il mio metodo web API supporta chiamate da VBScript? O avrei bisogno di qualche ritouch?

So che ora è un po ‘vecchio, ma l’ho risolto. Ho pensato di dare una risposta nel caso in cui qualcun altro restasse bloccato con questo compito. Ne avevo bisogno perché in un nuovo lavoro devo lavorare con un prodotto chiamato SmarTeam, che fa molto in vbscript, ma avevamo bisogno di più potenza.

Ho creato un’API Web ASP.Net standard 2. Segui qualsiasi tutorial disponibile per crearne uno. Il mio è abbastanza vicino a questo.

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

Successivamente ho creato un file vbscript, prima ho bisogno di alcune variabili. Ho ottenuto la maggior parte di questo da diversi siti diversi, e l’ho messo insieme, quindi è stato rubato da poche fonti diverse

 Dim oXMLDoc ' this will hold the response data Dim oXMLHTTP ' this is the object that will request the data const URLBase = "http://localhost:16370/api/" ' here is where my local web api was running const AppSinglePath = "application/get/1" ' and this is just one of the paths available in my api 

Il prossimo è un metodo che imposta i miei oggetti e si assicura che l’API sia pronta a parlarci

 Sub GetResponse Set oXMLHTTP = CreateObject("Microsoft.XmLHttp") ' create my request object Set oXMLDoc = CreateObject("MSXML2.DOMDocument") ' create my response object oXMLHTTP.onreadystatechange = getref("HandleStateChange") ' mode on this below, but it makes sure the API is ready Dim url = URLBase & AppSinglePath ' set up the URL we are going to request call oXMLHTTP.open("GET", url, false) call oXMLHTTP.setrequestheader("content-type","application/x-www-form-urlencoded") call oXMLHTTP.send() End Sub 

Ora abbiamo bisogno di un metodo che assicuri che l’API sia pronta e, quando lo sarà, gestirla. Per capire le diverse opzioni di ReadyState, controlla questo link, ma 4 è l’unico a cui teniamo (richiesta completata e risposta pronta)

http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp

 Sub HandleStateChange If oXMLHTTP.readyState = 4 Then ' get the response Dim szResponse: szResponse = oXMLHTTP.responseText ' turn it into XML we can read call oXMLDoc.loadXML(szResponse) If oXMLDoc.parseError.errorCode <> 0 Then ' there was an error, tell someone call msgbox(oXMLDoc.parseError.reason) Else ' i was writing the response to a local file, because I wanted to see the XML Set oFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\APIResults\api.txt",2,true) oFile.WriteLine(oXMLDoc.xml) oFile.Close Set oFile = Nothing ' We need to make a query to dive into the XML with Dim strQuery = "/Application/ApplicationName" ' Now we need to rip apart the XML, and do whatever we want with it Set colNodes = oXMLDoc.selectNodes(strQuery) For Each objNode in colNodes WScript.Echo objNode.nodeName & ": " & objNode.text Next End If End If End Sub 

E per il completamento, ecco una versione ripulita dell’XML che la mia API stava restituendo

  1 MyApplication  

Puoi provare diverse chiamate API modificando la seconda parte del percorso e la strQuery che si tuffa nell’XML