Problém se stahováním xml dokumentu

wajta

Problém se stahováním xml dokumentu
« kdy: 20. 05. 2019, 14:46:48 »
Zdravím,
nevím, do jaké sekce přesně můj dotaz patří, ale mám následující problém:

Mám v síti PLC, který poskytuje data přes http pomocí xml feedu. Do sítě jsem připojil Raspberry Pi s nainstalovaným posledním Raspbianem Lite a xml chci číst pomocí wget. Problém je v tom, že se dokument nenačte celý, resp. nenačte se určitá část, která je cca v první třetině dokumentu.
Zde přikládám malou ukázku:
takhle by měl soubor vypadat
<snmp>
<uptime>3192431225</uptime>
<ntptime>1558359788</ntptime>
<ipw_active>off</ipw_active>
<ipw_state>0</ipw_state>
</snmp>

a takhle se načte:
<snmp>
<uptime>3192431225</uptime>
<ntptime>1558359788</ntptime>
<ip
<ipw_state>0</ipw_state>
</snmp>

Jak je vidět, jeden element se načte jen z části, zbytek dokumentu už potom zase ok.
V čem by mohl být problém?


Medo77

  • ****
  • 288
    • Zobrazit profil
    • E-mail
Re:Problém se stahováním xml dokumentu
« Odpověď #1 kdy: 20. 05. 2019, 16:45:15 »
Curl sa sprava rovnako ?
Wget (curl) na inej masine (desktop/server) vie subor stiahnut korektne ?

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Problém se stahováním xml dokumentu
« Odpověď #2 kdy: 20. 05. 2019, 18:21:04 »
Prověřil bych ten soubor v hexa editoru. Možná se tam vloudil nějaký vadný bajt.

Re:Problém se stahováním xml dokumentu
« Odpověď #3 kdy: 20. 05. 2019, 20:24:06 »
Ověřte si, že ten soubor stáhnete opravdu takhle – nechtě ho wgetem nebo curl uložit přímo do souboru, a pak zkontrolujte, že tam nejsou žádné podivné znaky. Taky by pomohlo nechat si vypsat i HTTP hlavičky. Pokud ten soubor bude opravdu vypadat takhle, je to s největší pravděpodobností chyba toho HTTP serveru. Když si porovnám pravděpodobnost, že je chyba ve wgetu, která se u vás projevuje systematicky, ale nikdo jiný na ni zatím nepřišel; a pravděpodobnost, že ta chyba je v nějakém obskurním HTTP serveru implementovaném na PLC, sázel bych na ten server.

wajta

Re:Problém se stahováním xml dokumentu
« Odpověď #4 kdy: 21. 05. 2019, 08:51:31 »
Vyzkoušel jsem to i pomocí curl a výsledek je stejný.
Dokument jsem si nechal ulozit na disk, nic zvláštního v něm nevidím, jen tam prostě chybí ten řádek.

V podstatě se to chová tak, že opakovaným stahováním se stáhne identická xml struktura včetně toho nedotažení, to se opakuje stále na tom samém místě.

Když se pokusím xml stáhnout z jiného pc, funguje to bez problémů.
Přijde mi, že u wget, curl chyba být nemůže, na to by určitě někdo narazil, v http serveru asi také ne, protože z jiných počítačů to funguje, nejde to jen s tím raspbianem, kde bych to chtěl realizovat.

Ještě mě napadá zkusit vyměnit UTP kabel nebo ho přehodit do jiného portu na switchi.


Re:Problém se stahováním xml dokumentu
« Odpověď #5 kdy: 21. 05. 2019, 08:57:58 »
Nemyslím si, že by to bylo kabelem, TCP/IP má kontrolní součty a pakety na sebe musí navazovat, to by vadný kabel těžko zařídil. V tom serveru klidně chyba být může – záleží na časování, velikosti paketů, takže tu chybu může vyvolat specifické (ale správné) chování klienta.

Re:Problém se stahováním xml dokumentu
« Odpověď #6 kdy: 21. 05. 2019, 17:11:17 »
Vyzkoušel jsem to i pomocí curl a výsledek je stejný.
Dokument jsem si nechal ulozit na disk, nic zvláštního v něm nevidím, jen tam prostě chybí ten řádek.

V podstatě se to chová tak, že opakovaným stahováním se stáhne identická xml struktura včetně toho nedotažení, to se opakuje stále na tom samém místě.

Když se pokusím xml stáhnout z jiného pc, funguje to bez problémů.
Přijde mi, že u wget, curl chyba být nemůže, na to by určitě někdo narazil, v http serveru asi také ne, protože z jiných počítačů to funguje, nejde to jen s tím raspbianem, kde bych to chtěl realizovat.

Ještě mě napadá zkusit vyměnit UTP kabel nebo ho přehodit do jiného portu na switchi.

Porovnal bych přesně případy, kdy to funguje a kdy ne:

  • binárně porovnal stažené soubory
  • porovnal odeslane é přijaté hlavičky
  • pakety zachycené snifferem

Http umí posílat i rozsah bytů apod. takže i při funkčním tcp/ip se nemusí nutně přenést celý soubor.