2016-03-22 10 views
4

einige ältere gespeicherte SQL-Prozedur (SQL Server 2008) muss einige Informationen von einem Webdienst (Web Api 2) abrufen, die ich bereitgestellt habe.Rufen Sie einen Web Api 2-Endpunkt aus einer gespeicherten Prozedur

So rufen Sie den Endpunkt (in GET), rufen Sie die Daten (JSON-Format) und translate die Daten in einer temporären Tabelle empfangen in den Rest des SPROC verwendet werden?

Dank

+0

muss mein Beitrag Ihre Frage beantworten? Wenn ja, bitte überlege es zu akzeptieren. Vielen Dank! –

Antwort

4

Der beste Weg, Used-defined CRL function zu schaffen wäre und Ihren Web-API von dort anrufen, so können Sie die volle Leistung von C# und .Net-Bibliotheken verwenden Web-Anrufe zu tun und Json analysieren. Dazu gibt es viele Informationen im Internet. Zum Beispiel: https://blogs.msdn.microsoft.com/spike/2010/11/25/how-to-consume-a-web-service-from-within-sql-server-using-sql-clr/. Hier geht es insbesondere nicht um WebAPI, aber Sie können die Idee von dort bekommen.

Bitte beachten Sie, dass es erfordert Bereitstellung Ihrer benutzerdefinierten Assembly mit CLR-Funktion (en) an den SQL Server.

bearbeiten:

Es gibt einen Weg, um es in TSQL zu tun OLE Automation verwenden. Sehen Sie ein Beispiel here, aber es ist viel schwieriger, weniger dokumentiert und Sie verbringen wahrscheinlich Zeit, Ihr eigenes Fahrrad zu erfinden, anstatt fertige Lösungen von mit CLR-Funktionen zu verwenden.

+0

Danke @jk_xp! Ist im SQL-Server nichts eingebaut, um eine HTTP-Anfrage auszuführen? – ff8mania

+1

Es gibt einen Weg, ich habe meine Antwort aktualisiert. –

+0

Beantwortet das Ihre Frage? Wenn ja, bitte überlege es zu akzeptieren. Vielen Dank! –

4

Sie können es einfach, ohne dass Schreiben CRL:

Declare @Object as Int; 
Declare @ResponseText as Varchar(8000); 

Code Snippet 
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; 
Exec sp_OAMethod @Object, 'open', NULL, 'get', 
       'http://www.webservicex.com/stockquote.asmx/GetQuote?symbol=MSFT', --Your Web Service Url (invoked) 
       'false' 
Exec sp_OAMethod @Object, 'send' 
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT 

Select @ResponseText 

Exec sp_OADestroy @Object 
+0

Das hilft mir, wie ich Parameter an den Service weitergeben kann. – kiran

+4

Das ist gut für den Aufruf eines XML-Webdienstes, aber ich glaube, die ursprüngliche Frage war, wie eine Web-API (mit JSON, nicht XML) aufgerufen wird. – SoCalCoder

+0

Funktioniert das immer noch für alle? Wenn ich es ausführe, erhalte ich die Antwort: Ausnahme AAA

Verwandte Themen