Tak jak poniżej działa zapytanie jest poprawna odpowiedź ale jako GZIP
(jak zapiszesz stream odp. jako plik.gz to widać że odp jest poprawna) a nie wiem jak w Delphi 7 obsłużyć tą kompresję przy użyciu Synapse a nie mam czasu do tego dochodzić. W każdym razie dodanie nagłówka Accept-Encoding:identity
, który powinien spowodować aby serwer wysyłał odpowiedź jako czysty tekst nic nie daje.
procedure post();
var
DocStr : string;
data : String;
IP, PORT : string;
Base_Url : string;
SynHttp : THTTPSend;
begin
Base_Url := 'http://iptv-backend.apphb.com/RangesAndPorts.asmx';
IP := '89.66.193.3';
PORT := '80';
SynHttp:= THTTPSend.Create;
with SynHttp do
begin
data := '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetData xmlns="http://iptv-backend.apphb.com/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ip>'+IP+'</ip><port>'+PORT+'</port><source>pf1.18</source></GetData></s:Body></s:Envelope>';
Protocol := '1.1';
KeepAlive := True;
UserAgent := 'python-requests/2.20.0';
SynHttp.MimeType:= 'text/xml;charset=utf-8';
Headers.Add('SOAPAction:http://iptv-backend.apphb.com/GetData');
Headers.Add('Expect:100-continue');
Headers.Add('Accept-Encoding:gzip,deflate');
Headers.Add('Host:iptv-backend.apphb.com');
Document.Write(Pointer(data)^, Length(data));
HTTPMethod('POST',Base_Url);
DocStr := StreamToStr(Document);
Form1.Memo1.Text := DocStr;
end;
SynHttp.Free;
end;
Musisz sobie znaleźć jak w Synapse obsłużyć GZip albo z Synapse przejść na Indy, które (przynajmniej wersji 10.X w Delphi 7 domyślnie jest Indy 9 ale można wywalić i zainstalować 10) sobie bez problemu z tym radzi.