SOAP를 이용한 Client 소스 및 관련파일입니다.
참고하세요~
소스는 본문에 첨부합니다. ^^
<!--CodeS-->
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;
<!--CodeE-->
>그 동안은 웹서비스제공측에서 연결하는 DLL과 함수명과 예제(파라메타)를 제공해주면 그것에 맞추어서 함수만 호출하면 응답(T/F)만 받으면 됐었는데...
>이번엔 dll 없이 직접soap Client를 이용해서 결과값을 받아와야 하는데..
>
>해본적이 없어서 soap 컨퍼넌트를 폼에 올려놓고 사용법을 찾아 헤메이고 있어요~!
>
>soap을 사용해서 연결하는 간단한 예제 또는 사용법에 대해 설명 좀 부탁드릴께요~
>
>고수분들의 글 기다릴께요~ 꼭 부탁요~^^
>
>
참고하세요!