Witam,
Przyszło mi się zderzyć z tematem Webservice z usługi Rejestr TERYT (https://api.stat.gov.pl/Home/TerytApi).
Próbuję się połączyć z tą usługą w Delphi XE 6, niestety przy próbie połączenia otrzymuje komunikat:
Limit czasu operacji został przekroczony.
- URL: https://uslugaterytws1test.stat.gov.pl/TerytWS1.svg
- SOAPAction: http://tempuri.org/ITerytWs1/CzyZalogowany.
To co zrobiłem do tej pory to:
- Component -> ImportWDSL. (WSDL Source dałem: https://uslugaterytws1test.stat.gov.pl/wsdl/terytws1.wsdl oraz Automatic SOAP versioning). To wygenerowało mi plik PAS z potrzebnymi funkcjami.
- Wrzuciłem na formę komponenty THTTPRIO oraz THTTPReqResp i odpowiednio ustawiłem parametry na obu.
THTTPRIO.Port := 'custom'; // tutaj tylko ta jedna opcja "custom" jest do wyboru
THTTPRIO.Service := 'TerytWs1'; // tutaj również tylko ta opcja jest do wyboru.
THTTPRIO.WSDLLocation := 'https://uslugaterytws1test.stat.gov.pl/wsdl/terytws1.wsdl'
THTTPReqResp.UserName := 'TestPubliczny'; // dane pobrane z instrukcji
THTTPReqResp.Password := '1234abcd'; // dane pobrane z instrukcji
- Wywołanie połączenia:
var ten: ITerytWs1;
begin
ten := (THTTPRIO as ITerytWs1);
ShowMessage(BoolToStr(ten.CzyZalogowany));
end;
No i przy próbie sprawdzenia ten.CzyZalogowany mam komunikat Limit czasu został przekroczony.
Czy coś źle robię?
EDIT:
Gdy podczas importu WDSL zaznaczę opcje "Process only WSDL Binding extensions for the SOAP 1.2 Protocol" zauważyłem, że zmieniają się nieco funkcje w generowanym pliku PAS i muszę wtedy użyć połączenia w taki sposób
var
zalog: CzyZalogowany;
zalogRes: CzyZalogowanyResponse;
ten: ITerytWs1;
begin
zalog := CzyZalogowany.Create;
ten := (htpr1 as ITerytWs1);
zalogRes := ten.CzyZalogowany(zalog);
zalog.Free;
end;
Niestety to też nie pomogło, ale tym razem otrzymuje komunikat: Unable to retrieve the URL endpoint for Service/Port 'TerytWs1'/'custom' from WSDL https://uslugaterytws1test.stat.gov.pl/wsdl/terytws1.wsdl
Czy macie może jakiś sposób aby się z tą usługą połączyć?