Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Gọi một dịch vụ web SOAP từ thủ tục được lưu trữ TSQL

Trong quá khứ, tôi đã sử dụng phương pháp sau, nó có thể không phải là phương pháp tốt nhất hiện nay nhưng nó đã hoạt động thành công đối với tôi:

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

Tôi đã sử dụng nó để gọi một dịch vụ web tạo báo cáo và gửi nó qua email trong phương thức này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghi nhật ký các thay đổi vào bảng cơ sở dữ liệu với trình kích hoạt

  2. Chọn 30 ngày qua với truy vấn sql

  3. SqlRoleProvider:NullReferenceException khi gọi Roles.GetRolesForUser

  4. Cài đặt SQL Server 2012 - Lỗi:Các phiên bản trước Visual Studio 2010 yêu cầu cập nhật

  5. Chèn nhiều hàng trong Sybase ASE