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
(DataFlex) 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 ...
Use ChilkatAx-win32.pkg Procedure Test Handle hoHttp Handle hoSoapXml Boolean iSuccess String sXmlBody Variant vReq Handle hoReq Boolean iUseTls Variant vResp Handle hoResp Handle hoXmlResponse String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End Get Create (RefClass(cComChilkatXml)) To hoSoapXml If (Not(IsComObjectCreated(hoSoapXml))) Begin Send CreateComObject of hoSoapXml End Set ComTag Of hoSoapXml To "soap:Envelope" Get ComAddAttribute Of hoSoapXml "xmlns:soap" "http://schemas.xmlsoap.org/soap/envelope/" To iSuccess Send ComNewChild2 To hoSoapXml "soap:Body" "" Get ComGetChild2 Of hoSoapXml 0 To iSuccess Send ComNewChild2 To hoSoapXml "Detail" "" Get ComGetChild2 Of hoSoapXml 0 To iSuccess Get ComAddAttribute Of hoSoapXml "xmlns" "http://example.org/mtom/data" To iSuccess Send ComNewChild2 To hoSoapXml "image" "" Get ComGetChild2 Of hoSoapXml 0 To iSuccess Send ComNewChild2 To hoSoapXml "xop:Include" "" Get ComGetChild2 Of hoSoapXml 0 To iSuccess Get ComAddAttribute Of hoSoapXml "xmlns:xop" "http://www.w3.org/2004/08/xop/include" To iSuccess Get ComAddAttribute Of hoSoapXml "href" "cid:5aeaa450-17f0-4484-b845-a8480c363444@example.org" To iSuccess Send ComGetRoot2 To hoSoapXml Set ComEmitXmlDecl Of hoSoapXml To False Get ComGetXml Of hoSoapXml To sXmlBody Showln sXmlBody Get Create (RefClass(cComChilkatHttpRequest)) To hoReq If (Not(IsComObjectCreated(hoReq))) Begin Send CreateComObject of hoReq End Set ComHttpVerb Of hoReq To "POST" Set ComPath Of hoReq To "/something/someTarget" Set ComContentType Of hoReq To 'multipart/related; start-info="text/xml"; type="application/xop+xml"' Send ComAddHeader To hoReq "SOAPAction" "some-SOAP-action" Get ComAddStringForUpload2 Of hoReq "" "" sXmlBody "utf-8" 'application/xop+xml; type="text/xml"; charset=utf-8' To iSuccess // The bytes will be sent as binary (not base64 encoded). Get ComAddFileForUpload2 Of hoReq "" "qa_data/jpg/starfish.jpg" "image/jpeg" To iSuccess // The JPEG data is the 2nd sub-part, and therefore is at index 1 (the first sub-part is at index 0) Get ComAddSubHeader Of hoReq 1 "Content-ID" "<5aeaa450-17f0-4484-b845-a8480c363444@example.org>" To iSuccess // Add the Content-Disposition: 8bit sub-header Get ComAddSubHeader Of hoReq 1 "Content-Disposition" "8bit" To iSuccess Set ComFollowRedirects Of hoHttp To True // 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..) Set ComSessionLogFilename Of hoHttp To "qa_output/mtom_sessionLog.txt" Move True To iUseTls // Note: Please don't run this example without changing the domain to your own domain... Get pvComObject of hoReq to vReq Get ComSynchronousRequest Of hoHttp "www.example.org" 443 iUseTls vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatXml)) To hoXmlResponse If (Not(IsComObjectCreated(hoXmlResponse))) Begin Send CreateComObject of hoXmlResponse End Get ComBodyStr Of hoResp To sTemp1 Get ComLoadXml Of hoXmlResponse sTemp1 To iSuccess Get ComGetXml Of hoXmlResponse To sTemp1 Showln sTemp1 Send Destroy of hoResp End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.