Delphi soap response save to xml?

delphi, soap-client

Solution

Did you try dumping your stream directly to a file, to see what’s in there?

procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream);
var 
  FS: TFileStream;
begin
  FS := TFileStream.Create('C:\Downloaded.xml', fmCreate);
  try
    FS.CopyFrom(SoapResponse, 0);
  finally
    FS.Free;
  end;
end;

Problem

How can I save soap response to xml? I tried with tstringlist, filestream, created the xml file but, but I got could not convert varinat of type (null) into (type (olestr) I tried this simple code.The response is not empty.The file size 40MB. Delphi XE3. ``` procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream); var xml : TStringlist; begin xml := TStringlist.create; try soapresponse.Position:=0; xml.LoadFromStream(SOAPResponse); xml.SaveToFile('...file.xml'); finally xml.Free; end; end; ``` this is the problem(empty lines)? or not ? ``` ... - <leiras> - <![CDATA[ * Socket AM2 for AMD Athlon™ 64FX / 64X2 / 64 and Sempron processors * ULi M1697 1. Supports FSB 1000MHz (2.0GT/s), Hyper-Transport Technology and AMD Cool 'n' Quiet Technology 2. Untied Overclocking : During Overclocking, FSB enjoys better margin due to fixed PCIE/ PCI Buses 3. Supports Dual Channel DDRII800/667/533, 4 x DIMM slots, with maximum capacity up to 8GB 4. Hybrid Booster - ASRock Safe Overclocking Technology 5. Supports Dual Graphics XLI 6. 1 x PCI Express x16 slot 7. 1 x PCI Express x 8 slot, to adopt 2nd PCI Express x 16 VGA card and other PCI Express x4, x2, x1 interface cards 8. 2 x PCI Express x1 slots 9. 4 x Serial ATA II 3.0Gb/s, support RAID (RAID 0, 1, 0+1, JBOD and RAID 5), NCQ, AHCI and "Hot Plug" functions 10. 2 x eSATAII 3.0Gb/s, support NCQ, AHCI and "Hot Plug" functions 11. HDMI_SPDIF header, providing SPDIF audio output to HDMI VGA card, allows the system to connect HDMI Digital TV/projector/LCD devices. 12. 7.1 Channel with High Definition Audio 13. Windows Vista™ Premium Logo Hardware Ready 14. ASRock 8CH_eSATAII I/O: 2 eSATAII ports, HD 7.1 channel audio jacks ]]> </leiras> <kepek /> ... ``` i tried NullStrictConvert := False; no convert error,but the exe using 1GB RAM,until i close it. ``` ... var xml : TStringlist; begin xml := TStringlist.create; NullStrictConvert := False; try soapresponse.Position:=0; ... ```

Original source