Laden...

Wie feuer ich einen SOAP Request über TSQL?

Erstellt von _Cashisclay vor 3 Jahren Letzter Beitrag vor 3 Jahren 745 Views
_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 3 Jahren
Wie feuer ich einen SOAP Request über TSQL?

verwendetes Datenbanksystem: MSSMS 17

Hallo zusammen,

ich möchte gern meine Soap Request in Zukunft über die Datenbank abfeuern.
Ich hab mir dazu mal ein passendes Statement rausgesucht.

https://stackoverflow.com/questions/33449/can-you-call-a-webservice-from-tsql-code

CREATE PROCEDURE CALLWEBSERVICE(@Para1 ,@Para2)
AS
BEGIN
    Declare @Object as Int;
    Declare @ResponseText as Varchar(8000);

    Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
    Exec sp_OAMethod @Object, 'open', NULL, 'get', 'http://www.webservicex.com/stockquote.asmx/GetQuote?symbol=MSFT','false'
    Exec sp_OAMethod @Object, 'send'
    Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
    Select @ResponseText
    Exec sp_OADestroy @Object
END

Das Statement zum Xml Request hab ich mir von der SoapUI zusammenbauen lassen der funktioniert dort auch super, deswegen denke ich nicht das es daran liegt.

Mein Sql Statement gibt mir jedes mal als Response ein Null Wert zurück und die Request wird logischerweise auch nicht ausgeführt. Hat jemand damit Erfahrungen damit und sieht etwas was ich nicht sehe? Ich führe das Statement aktuell direkt aus nicht als Prozedur, denkt ihr das macht einen Unterschied? Lässt meine Soap Api vielleicht einfach nicht den Zugriff von der Datenbank aus zu?

Hab schon einiges probiert, aber bisher noch keinen Weg gefunden, sollte doch aber möglich sein oder?

Grüße

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 3 Jahren

Ich kriege schon beim ausführen von

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT

den Wert 16711422 zurück, aber müsste dort laut Doku nicht eine 0 wiederkommen wenn es erfolgreich war?

Nvm.

EXEC @hr = sp_OACreate 'MSXML2.XMLHTTP', @object OUT

Gibt korrekt eine 0 zurück.

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 3 Jahren