Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) SOAP with MTOM XOP 8bit (binary) AttachmentDemonstrates how to send the following sample SOAP request with an MTOM/XOP attachment: Content-Type: Multipart/Related; start-info="text/xml"; type="application/xop+xml"; boundary="----=_Part_0_1744155.1118953559416" Content-Length: 3453 SOAPAction: "some-SOAP-action" ------=_Part_1_4558657.1118953559446 Content-Type: application/xop+xml; type="text/xml"; charset=utf-8 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Detail xmlns="http://example.org/mtom/data"> <image> <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:5aeaa450-17f0-4484-b845-a8480c363444@example.org" /> </image> </Detail> </soap:Body> </soap:Envelope> ------=_Part_1_4558657.1118953559446 Content-Type: image/jpeg Content-ID: _LT_5aeaa450-17f0-4484-b845-a8480c363444@example.org_GT_ Content-Disposition: 8bit ... binary data ...
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @http int -- Use "Chilkat_9_5_0.Http" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @soapXml int -- Use "Chilkat_9_5_0.Xml" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Xml', @soapXml OUT EXEC sp_OASetProperty @soapXml, 'Tag', 'soap:Envelope' DECLARE @success int EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns:soap', 'http://schemas.xmlsoap.org/soap/envelope/' EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'soap:Body', '' EXEC sp_OAMethod @soapXml, 'GetChild2', @success OUT, 0 EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'Detail', '' EXEC sp_OAMethod @soapXml, 'GetChild2', @success OUT, 0 EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns', 'http://example.org/mtom/data' EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'image', '' EXEC sp_OAMethod @soapXml, 'GetChild2', @success OUT, 0 EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'xop:Include', '' EXEC sp_OAMethod @soapXml, 'GetChild2', @success OUT, 0 EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns:xop', 'http://www.w3.org/2004/08/xop/include' EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'href', 'cid:5aeaa450-17f0-4484-b845-a8480c363444@example.org' EXEC sp_OAMethod @soapXml, 'GetRoot2', NULL EXEC sp_OASetProperty @soapXml, 'EmitXmlDecl', 0 DECLARE @xmlBody nvarchar(4000) EXEC sp_OAMethod @soapXml, 'GetXml', @xmlBody OUT PRINT @xmlBody DECLARE @req int -- Use "Chilkat_9_5_0.HttpRequest" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT EXEC sp_OASetProperty @req, 'HttpVerb', 'POST' EXEC sp_OASetProperty @req, 'Path', '/something/someTarget' EXEC sp_OASetProperty @req, 'ContentType', 'multipart/related; start-info="text/xml"; type="application/xop+xml"' EXEC sp_OAMethod @req, 'AddHeader', NULL, 'SOAPAction', 'some-SOAP-action' EXEC sp_OAMethod @req, 'AddStringForUpload2', @success OUT, '', '', @xmlBody, 'utf-8', 'application/xop+xml; type="text/xml"; charset=utf-8' -- The bytes will be sent as binary (not base64 encoded). EXEC sp_OAMethod @req, 'AddFileForUpload2', @success OUT, '', 'qa_data/jpg/starfish.jpg', 'image/jpeg' -- The JPEG data is the 2nd sub-part, and therefore is at index 1 (the first sub-part is at index 0) EXEC sp_OAMethod @req, 'AddSubHeader', @success OUT, 1, 'Content-ID', '<5aeaa450-17f0-4484-b845-a8480c363444@example.org>' -- Add the Content-Disposition: 8bit sub-header EXEC sp_OAMethod @req, 'AddSubHeader', @success OUT, 1, 'Content-Disposition', '8bit' EXEC sp_OASetProperty @http, 'FollowRedirects', 1 -- For debugging, set the SessionLogFilename property -- to see the exact HTTP request and response in a log file. -- (Given that the request contains binary data, you'll need an editor -- that can gracefully view text + binary data. I use EmEditor for most simple editing tasks..) EXEC sp_OASetProperty @http, 'SessionLogFilename', 'qa_output/mtom_sessionLog.txt' DECLARE @useTls int SELECT @useTls = 1 -- Note: Please don't run this example without changing the domain to your own domain... DECLARE @resp int EXEC sp_OAMethod @http, 'SynchronousRequest', @resp OUT, 'www.example.org', 443, @useTls, @req EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 0 BEGIN EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @soapXml EXEC @hr = sp_OADestroy @req RETURN END DECLARE @xmlResponse int -- Use "Chilkat_9_5_0.Xml" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Xml', @xmlResponse OUT EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT EXEC sp_OAMethod @xmlResponse, 'LoadXml', @success OUT, @sTmp0 EXEC sp_OAMethod @xmlResponse, 'GetXml', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @resp EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @soapXml EXEC @hr = sp_OADestroy @req EXEC @hr = sp_OADestroy @xmlResponse END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.