![]()  | 
  
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
 
      (Delphi ActiveX) SOAP with MTOM XOP 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: <5aeaa450-17f0-4484-b845-a8480c363444@example.org>
... binary data ...
Note: This example requires Chilkat v11.0.0 or greater. 
 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var success: Integer; http: TChilkatHttp; soapXml: TChilkatXml; xmlBody: WideString; req: TChilkatHttpRequest; useTls: Integer; resp: TChilkatHttpResponse; xmlResponse: TChilkatXml; begin success := 0; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http := TChilkatHttp.Create(Self); soapXml := TChilkatXml.Create(Self); soapXml.Tag := 'soap:Envelope'; success := soapXml.AddAttribute('xmlns:soap','http://schemas.xmlsoap.org/soap/envelope/'); soapXml.NewChild2('soap:Body',''); success := soapXml.GetChild2(0); soapXml.NewChild2('Detail',''); success := soapXml.GetChild2(0); success := soapXml.AddAttribute('xmlns','http://example.org/mtom/data'); soapXml.NewChild2('image',''); success := soapXml.GetChild2(0); soapXml.NewChild2('xop:Include',''); success := soapXml.GetChild2(0); success := soapXml.AddAttribute('xmlns:xop','http://www.w3.org/2004/08/xop/include'); success := soapXml.AddAttribute('href','cid:5aeaa450-17f0-4484-b845-a8480c363444@example.org'); soapXml.GetRoot2(); soapXml.EmitXmlDecl := 0; xmlBody := soapXml.GetXml(); Memo1.Lines.Add(xmlBody); req := TChilkatHttpRequest.Create(Self); req.HttpVerb := 'POST'; req.Path := '/something/someTarget'; req.ContentType := 'multipart/related; start-info="text/xml"; type="application/xop+xml"'; req.AddHeader('SOAPAction','some-SOAP-action'); success := req.AddStringForUpload2('','',xmlBody,'utf-8','application/xop+xml; type="text/xml"; charset=utf-8'); // The bytes will be sent as binary (not base64 encoded). success := req.AddFileForUpload2('','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) success := req.AddSubHeader(1,'Content-ID','<5aeaa450-17f0-4484-b845-a8480c363444@example.org>'); 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..) http.SessionLogFilename := 'qa_output/mtom_sessionLog.txt'; useTls := 1; // Note: Please don't run this example without changing the domain to your own domain... resp := TChilkatHttpResponse.Create(Self); success := http.HttpSReq('www.example.org',443,useTls,req.ControlInterface,resp.ControlInterface); if (success = 0) then begin Memo1.Lines.Add(http.LastErrorText); Exit; end; xmlResponse := TChilkatXml.Create(Self); success := xmlResponse.LoadXml(resp.BodyStr); Memo1.Lines.Add(xmlResponse.GetXml()); end;  | 
  ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.