Article View: pl.comp.lang.delphi
Article #346147Re: GUS i httprio - SID w nagłówku http, EDOMParsError. CDATA
From: kali - Tomasz Kalinowski
Date: Thu, 02 Nov 2017 10:44
Date: Thu, 02 Nov 2017 10:44
109 lines
7260 bytes
7260 bytes
Poproszę Was jeszcze jednak o pomoc. Utkwiłem dalej. Aktualnie dane odbieram ale pojawia się wspomniany błąd (po pobraniu danych): EDOMParsError with message 'Nieprawidłowa wartość na najwyższym poziomie dokumentu'
Co i jak:
Wysyłana koperta SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV: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/DaneSzukaj</wsa:Action> </SOAP-ENV:Header><SOAP-ENV:Body><DaneSzukaj xmlns="http://CIS/BIR/PUBL/2014/07"><pParametryWyszukiwania><Nip xmlns="http://CIS/BIR/PUBL/2014/07/DataContract">5420201038</Nip></pParametryWyszukiwania></DaneSzukaj></SOAP-ENV:Body></SOAP-ENV:Envelope>
Odpowiedź. Dane odbieram w postaci (< > ...):
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/DaneSzukajResponse</a:Action></s:Header><s:Body><DaneSzukajResponse xmlns="http://CIS/BIR/PUBL/2014/07"><DaneSzukajResult><root>
<dane>
<Regon>05002589200000</Regon>
<RegonLink>&lt;a href='javascript:danePobierzPelnyRaport("05002589200000","DaneRaportPrawnaPubl", 0);'&gt;050025892&lt;/a&gt;</RegonLink>
<Nazwa>MPO SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ</Nazwa>
<Wojewodztwo>PODLASKIE</Wojewodztwo>
<Powiat>m. Białystok</Powiat>
<Gmina>M. Białystok</Gmina>
<Miejscowosc>Białystok</Miejscowosc>
<KodPocztowy>15-950</KodPocztowy>
<Ulica>ul. Test-Krucza</Ulica>
<Typ>P</Typ>
<SilosID>6</SilosID>
</dane>
</root></DaneSzukajResult></DaneSzukajResponse></s:Body></s:Envelope>
I otrzymuje błąd j.w. Więc podmieniam Response w HTTPRIO1AfterExecute:
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string;
SOAPResponse: TStream);
var sl: tstringlist;
data:string;
begin
if operacja='DaneSzukaj' then
begin
//showmessage('tu');
Memo1.Lines.Add(' ______________________________________');
Memo1.Lines.Add('Resopnse: '+MethodName);
sl:=TStringList.Create;
SOAPResponse.Position:=0;
with TStringStream.Create('') do
try
CopyFrom(SOAPResponse, SOAPResponse.Size - SOAPResponse.Position);
data:= DataString;
Data:=StringReplace(Data,'&','&',[RfReplaceAll]);
Data:=StringReplace(Data,'<','<',[RfReplaceAll]);
Data:=StringReplace(Data,'>','>',[RfReplaceAll]);
Data:=StringReplace(Data,'
','',[RfReplaceAll]);
// Data:=StringReplace(Data,'<DaneSzukajResult>','<DaneSzukajResult><![CDATA[',[RfReplaceAll]);
// Data:=StringReplace(Data,'</root>','</root>]]>',[RfReplaceAll]);
sl.Add(data);
SOAPResponse.Size := 0;
SOAPResponse.Position := 0;
sl.SaveToStream(SOAPResponse);
Data:=UTF8ToWideString(Data);
Memo1.Lines.Add(data);
finally
Free;
end;
end;
Oczywiście wtedy odpowiedź jest czytelniejsza (+UTF8ToWideString):
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/DaneSzukajResponse</a:Action></s:Header><s:Body><DaneSzukajResponse xmlns="http://CIS/BIR/PUBL/2014/07"><DaneSzukajResult><root>
<dane>
<Regon>05002589200000</Regon>
<RegonLink><a href='javascript:danePobierzPelnyRaport("05002589200000","DaneRaportPrawnaPubl", 0);'>050025892</a></RegonLink>
<Nazwa>MPO SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ</Nazwa>
<Wojewodztwo>PODLASKIE</Wojewodztwo>
<Powiat>m. Białystok</Powiat>
<Gmina>M. Białystok</Gmina>
<Miejscowosc>Białystok</Miejscowosc>
<KodPocztowy>15-950</KodPocztowy>
<Ulica>ul. Test-Krucza</Ulica>
<Typ>P</Typ>
<SilosID>6</SilosID>
</dane>
</root></DaneSzukajResult></DaneSzukajResponse></s:Body></s:Envelope>
jednak błąd nadal się pojawia. Dodawałem więc znaczniki CDATA: Mimo to, ciągle to samo:
EDOMParsError:
Line: 215 </root>]]></DaneSzukajResult></DaneSzuka'. (tak, brak j>)
Debuger zatrzymuje program w Xml.XMLDoc w procedurze LoadData w tym miejscu:
if not Status then
begin
DocSource := xdsNone;
ParseError := DOMDocument as IDOMParseError;
Msg := Format('%s%s%s: %d%s%s', [ParseError.Reason, SLineBreak, SLine,
ParseError.Line, SLineBreak, Copy(ParseError.SrcText, 1, 40)]);
> raise EDOMParseError.Create(ParseError, Msg);
end;
Przeglądałem Unofficial SOAP Bug Fixes, ale prócz poprawki ActivateDSL z SOAP.WSDLNode.pas niczego nie znalazłem.
Odpowiedź z danymi z ws, po dokonaniu zamian w responsie (<...) wygląda identycznie, jak ta, którą otrzymuję w SoapUI.
Pracuje na wersjii Berlin.
Może macie dla mnie jakieś sugestie?
Czy owy problem ze znacznikami cdata/< da się rozwiązać zgrabniej?
Jest też problem z kodowaniem. Dane które wracają się krzaczą dopóki nie wykonam konwersji UTF8ToWideString (może to jakaś wskazówka).
Dzięki za pomoc ....
- kali
Technical Details
Message-ID:
<c426c356-863e-4ad1-a093-859e9ec067cd@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!z50no777155qtj.0!news-out.google.com!v14ni1653qtc.0!nntp.google.com!k31no770573qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<1f0e00a9-2a79-4683-bce9-7f12abcb551d@googlegroups.com> <0ffb26e4-ce45-4b95-9aef-18dd56465bf4@googlegroups.com> <899c467c-dd0d-4a65-aaba-5d3714558ca1@googlegroups.com> <90312a1c-ef7e-4e9d-bfe7-91a253036b12@googlegroups.com> <dy148590jagb$.dlg@tyczka.com> <2ffd6599-8a1a-419a-bad6-8abfade1aeab@googlegroups.com> <90dda74f-b7c1-4b1e-93f0-18b671409ff5@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.237.63.36 with SMTP id p33mr2154850qtf.16.1509619483803; Thu, 02 Nov 2017 03:44:43 -0700 (PDT) X-Received: by 10.157.15.247 with SMTP id m52mr86711otd.1.1509619483626; Thu, 02 Nov 2017 03:44:43 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!z50no777155qtj.0!news-out.google.com!v14ni1653qtc.0!nntp.google.com!k31no770573qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Thu, 2 Nov 2017 03:44:43 -0700 (PDT) In-Reply-To: <90dda74f-b7c1-4b1e-93f0-18b671409ff5@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=109.231.45.61; posting-account=nydamgoAAAABZaXeK216J1vT5w9W4FrQ NNTP-Posting-Host: 109.231.45.61 References: <1f0e00a9-2a79-4683-bce9-7f12abcb551d@googlegroups.com> <0ffb26e4-ce45-4b95-9aef-18dd56465bf4@googlegroups.com> <899c467c-dd0d-4a65-aaba-5d3714558ca1@googlegroups.com> <90312a1c-ef7e-4e9d-bfe7-91a253036b12@googlegroups.com> <dy148590jagb$.dlg@tyczka.com> <2ffd6599-8a1a-419a-bad6-8abfade1aeab@googlegroups.com> <90dda74f-b7c1-4b1e-93f0-18b671409ff5@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <c426c356-863e-4ad1-a093-859e9ec067cd@googlegroups.com> Subject: Re: GUS i httprio - SID w nagłówku http, EDOMParsError. CDATA From: kali - Tomasz Kalinowski <tkalinows@gmail.com> Injection-Date: Thu, 02 Nov 2017 10:44:43 +0000 Lines: 143 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit