Нужно всего-то передать методом Post xml-запрос на указанный адрес. В ответ получить xml-ответ, который записать в мемо и спокойно читать.
Нашёл, гугля, аж несколько примеров, НО... У адреса протокол HTTPS это приводит к тому, что вместо xml-ответа получаю html с надписью про ошибку 400.
Код который сейчас у меня работает, когда просто http, а не https:
- Код: Выделить всё
- .....
 interface
 uses
 Classes, SysUtils, lhttp, lHTTPUtil, lNet, FileUtil, Forms, Controls,
 Graphics, Dialogs, StdCtrls, LCLIntf;
 type
 { TForm1 }
 TForm1 = class(TForm)
 Button1: TButton;
 Memo1: TMemo;
 procedure Button1Click(Sender: TObject);
 private
 { private declarations }
 public
 { public declarations }
 done:boolean;
 function ClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer;
 procedure ClientDisconnect(ASocket: TLSocket);
 procedure ClientDoneInput(ASocket: TLHTTPClientSocket);
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.lfm}
 { TForm1 }
 function TForm1.ClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer;
 begin
 memo1.Text:=ABuffer;
 end;
 procedure TForm1.ClientDisconnect(ASocket: TLSocket);
 begin
 done := true;
 end;
 procedure TForm1.ClientDoneInput(ASocket: TLHTTPClientSocket);
 begin
 ASocket.Disconnect;
 end;
 procedure TForm1.Button1Click(Sender: TObject);
 var
 httpclient: TLHTTPClient;
 sHost, sUrl: string;
 sPort: word;
 begin
 try
 httpclient := TLHTTPClient.Create(nil);
 httpclient.OnDisconnect := @ClientDisconnect;
 httpclient.OnDoneInput := @ClientDoneInput;
 httpclient.OnInput := @ClientInput;
 DecomposeURL('https://www.moyservis.ru/script.aspx', sHost, sUrl, sPort);
 httpclient.Method := hmPost;
 httpclient.Port := sPort;
 httpclient.Host := sHost;
 httpclient.URI := sUrl;
 httpclient.AddExtraHeader('Keep-Alive: 300');
 httpclient.AddExtraHeader('Connection: keep-alive');
 httpclient.AddExtraHeader('Content-Type: text/xml');
 httpclient.AddExtraHeader(LineEnding);
 httpclient.AddExtraHeader(
 '<myservice-request>' + LineEnding +
 '<blablabla>123</blablabla>' +LineEnding +
 '</myservice-request>'
 );
 httpclient.SendRequest;
 Done := false;
 while not Done do
 HttpClient.CallAction;
 finally
 httpclient.Free;
 end;
 end;
 end.




