Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memanggil layanan web SOAP dari prosedur tersimpan TSQL

Di masa lalu saya telah menggunakan metode berikut, ini mungkin bukan metode terbaik hari ini tetapi telah berhasil untuk saya :

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

Saya telah menggunakan ini untuk memanggil layanan web yang menghasilkan laporan dan mengirimkannya melalui email dalam metode.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada hit kinerja yang parah untuk menggunakan Kunci Asing di SQL Server?

  2. Indeks SQL Server:Persyaratan utama, dampak kinerja, dan pertimbangan

  3. Mengapa tidak dapat membuat tabel sementara global atau memotongnya saat memanggil prosedur tersimpan dari kode C#?

  4. Apakah Penyedia Microsoft OLE DB untuk SQL Server mendukung TLS 1.2?

  5. Cara memperbarui bidang yang disisipkan di pemicu