Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wywołanie usługi internetowej SOAP z procedury składowanej TSQL

W przeszłości korzystałem z następującej metody, obecnie może nie jest to najlepsza metoda, ale dla mnie zadziałała z powodzeniem :

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

Użyłem tego do wywołania usługi internetowej, która generuje raport i wysyła go e-mailem w ramach metody.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj SQL według liczby zliczeń

  2. Konwersja Unicode do Non-Unicode

  3. 3 sposoby na uzyskanie nazwy miesiąca z daty w SQL Server (T-SQL)

  4. Jak podać wiele wartości pomiędzy klauzulą ​​po klauzuli where?

  5. Określanie progu eskalacji blokady