Próbuję pobrać dane podmiotu z bazy GUS na podstawie numeru NIP.
Przy pomocy WSDL Importer
próbowałem zbudować interfejs do webserwisu i interfejs się tworzy, ale nie działa jak tego oczekuję (sypie błędami) , więc postanowiłem zejść poziom niżej i wykorzystać wprost klasę THTTPReqResp
tak jak w poniższej, testowej funkcji:
function test: string;
var
lHttpReqResp: THTTPReqResp;
lSoapEnvelope: string;
lMemStream: TMemoryStream;
begin
result := 'OK';
lHttpReqResp := THTTPReqResp.Create(nil);
lMemStream := TMemoryStream.Create;
try
lSoapEnvelope := //
' <?xml version="1.0" encoding="UTF-8"?> ' + //
'<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://CIS/BIR/PUBL/2014/07"> ' + //
' <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> ' + //
' <wsa:To>https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</wsa:To> ' + //
' <wsa:Action>http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj</wsa:Action> ' + //
' </soap:Header> ' + //
' <soap:Body> ' + //
' <ns:Zaloguj> ' + //
' <ns:pKluczUzytkownika>abcde12345abcde12345</ns:pKluczUzytkownika> ' + //
' </ns:Zaloguj> ' + //
' </soap:Body> ' + //
'</soap:Envelope> ';
try
lHttpReqResp.UseUTF8InHeader := True;
lHttpReqResp.Connect(False);
lHttpReqResp.URL := 'https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc';
lHttpReqResp.InvokeOptions := [soNoValueForEmptySOAPAction];
lHttpReqResp.Execute(lSoapEnvelope, lMemStream);
except
on e: Exception do
result := e.Message;
end;
finally
lMemStream.Free;
lHttpReqResp.Free;
end;
end;
Rezultatem funkcji jest string ''OK" albo string z opisem błędu (e.message).
Niestety, w rezultacie dostaję takie coś:
Cannot process the message because the content type 'text/xml; charset="utf-8"' was not the expected type 'multipart/related; type="application/xop+xml"'. (415) - 'https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc'