Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
SOAP ExampleHow to send a SOAP request and get the XML response. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CHILKATXMLLib_TLB, CHILKATHTTPLib_TLB, OleCtrls; ... procedure TForm1.Button1Click(Sender: TObject); var req: TChilkatHttpRequest; http: TChilkatHttp; success: Integer; soapReq: CHILKATXMLLib_TLB.IChilkatXml; domain: String; port: Integer; ssl: Integer; resp: IChilkatHttpResponse; soapResp: CHILKATXMLLib_TLB.IChilkatXml; xmlResp: CHILKATXMLLib_TLB.IChilkatXml; begin req := TChilkatHttpRequest.Create(Self); http := TChilkatHttp.Create(Self); // Any string unlocks the component for the 1st 30-days. success := http.UnlockComponent('Anything for 30-day trial'); if (success <> 1) then begin ShowMessage(http.LastErrorText); Exit; end; // Build this XML SOAP request: // <?xml version="1.0" encoding="utf-8"?> // <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" // xmlns:xsd="http://www.w3.org/2001/XMLSchema" // xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> // <soap:Body> // <GetQuote xmlns="http://www.webserviceX.NET/"> // <symbol>string</symbol> // </GetQuote> // </soap:Body> // </soap:Envelope> soapReq := TChilkatXml.Create(Self).ControlInterface; soapReq.Encoding := 'utf-8'; soapReq.Tag := 'soap:Envelope'; soapReq.AddAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance'); soapReq.AddAttribute('xmlns:xsd','http://www.w3.org/2001/XMLSchema'); soapReq.AddAttribute('xmlns:soap','http://schemas.xmlsoap.org/soap/envelope/'); soapReq.NewChild2('soap:Body',''); soapReq.FirstChild2(); soapReq.NewChild2('GetQuote',''); soapReq.FirstChild2(); soapReq.AddAttribute('xmlns','http://www.webserviceX.NET/'); soapReq.NewChild2('symbol','MSFT'); soapReq.GetRoot2(); Memo1.Lines.Add(soapReq.GetXml()); // Build an SOAP request. req.UseXmlHttp(soapReq.GetXml()); req.Path := '/stockquote.asmx'; req.AddHeader('SOAPAction','http://www.webserviceX.NET/GetQuote'); // Send the HTTP POST and get the response. Note: This is a blocking call. // The method does not return until the full HTTP response is received. domain := 'www.webservicex.net'; port := 80; ssl := 0; resp := http.SynchronousRequest(domain,port,ssl,req.DefaultInterface); if (resp = nil ) then begin Memo1.Lines.Add(http.LastErrorText); end else begin // The XML response is in the BodyStr property of the response object: soapResp := TChilkatXml.Create(Self).ControlInterface; soapResp.LoadXml(resp.BodyStr); // The response will look like this: // <?xml version="1.0" encoding="utf-8"?> // <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" // xmlns:xsd="http://www.w3.org/2001/XMLSchema" // xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> // <soap:Body> // <GetQuoteResponse xmlns="http://www.webserviceX.NET/"> // <GetQuoteResult>string</GetQuoteResult> // </GetQuoteResponse> // </soap:Body> // </soap:Envelope> // Navigate to soap:Body soapResp.FirstChild2(); // Navigate to GetQuoteResponse soapResp.FirstChild2(); // Navigate to GetQuoteResult soapResp.FirstChild2(); // The actual XML response is the data within GetQuoteResult: xmlResp := TChilkatXml.Create(Self).ControlInterface; xmlResp.LoadXml(soapResp.Content); // Display the XML response: Memo1.Lines.Add(xmlResp.GetXml()); end; end; |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.