sql >> Database >  >> RDS >> Sqlserver

Een SOAP-webservice aanroepen vanuit de TSQL-opgeslagen procedure

In het verleden heb ik de volgende methode gebruikt, het is tegenwoordig misschien niet de beste methode, maar het heeft met succes voor mij gewerkt:

DECLARE @obj int,
        @url VarChar(MAX),
        @response VarChar(MAX),
        @requestHeader VarChar(MAX),
        @requestBody VarChar(MAX)

SET @url = 'http://....'

SET @requestBody = '<soapenv:Envelope>
                     <soapenv:Header/>
                      <soapenv:Body>
                       ...
                      </soapenv:Body>
                     </soapenv:Envelope>'

EXEC sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
EXEC sp_OAMethod @obj, 'Open', NULL, 'GET', @url, false
EXEC sp_OAMethod @obj, 'setRequestHeader', NULL, 'Content-Type', 'text/xml;charset=UTF-8'
EXEC sp_OAMethod @obj, 'setRequestHeader', NULL, 'SOAPAction', 'POST'
EXEC sp_OAMethod @obj, 'setRequestHeader', NULL, 'Content-Length', LEN(@requestBody)
EXEC sp_OAMethod @obj, 'send', NULL, @requestBody
EXEC sp_OAGetProperty @obj, 'responseText', @response OUT


SELECT @response [RESPONSE]

EXEC sp_OADestroy @obj

Ik heb dit gebruikt om een ​​webservice aan te roepen die een rapport produceert en dit binnen de methode e-mailt.



  1. java.lang.ClassCastException:oracle.sql.TIMESTAMP kan niet worden gecast naar java.sql.Timestamp

  2. Geef SELECT STATEMENT als IN-parameter door aan de procedure en voer het uit in Oracle

  3. Facebook-ID opslaan als int of varchar?

  4. Null Pointer-uitzondering bij het aanroepen van getReadableDatabase()