Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Извикване на SOAP уеб услуга от TSQL съхранена процедура

В миналото съм използвал следния метод, може да не е най-добрият метод в наши дни, но работи успешно за мен:

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

Използвал съм това, за да извикам уеб услуга, която създава отчет и го изпраща по имейл в рамките на метода.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изграждане на модел за машинно обучение със SQL Server, ML.NET и C#

  2. Пълзяща средна стойност на прозореца в sql сървър

  3. CTE безкраен цикъл с ОПЦИЯ (макс. рекурсия 0)

  4. Как да преместя таблица в определена FileGroup в SQL Server 2008

  5. Преобразувайте Int в поле за дата