Dobrý den,
testujeme poprvé v našem programu odesílání zprávy (CreateMessaga) z datové schránky, ale server nám vrací nečekanou odpověď.
Server vrací HTTP protokolem odpověď OK (kód 200), ale odpověď neobsahuje žádné tělo (hlavička Content-Length ukazuje nulovou délku), ačkoli by se podle specifikace mělo vracet tělo ve formátu XML, obsahující chybové hlášení (hlavička Content-Type skutečně udává formát XML).
Login ke schránce probíhá v pořádku (a pokud zadáme např. špatné heslo, vrací se správně příslušný chybový kód HTTP protokolu).
Server snad zmátly nějaké hrubé chyby v posílaném CreateMessage požadavku - jsou to naše úplně první pokusy s maximálně zjednodušeným tvarem.
Prosíme proto podporu ISDS, zda nám může z logovaných záznamů serveru zjistit, proč server nevrací chybové hlášení podle specifikace, resp. jakou minimální opravu / doplnění musíme v CreateMessage požadavku provést, aby se běžná chybová hlášení začala vracet.
Naše schránka na testovacím prostředí má ID fxh8mt. Náš poslední odeslaný CreateMessage požadavek se datuje 1.1.2016, ve 12:03:35.
Mohu případně ještě připojit ještě soubor s CreateMessage požadavkem v přesné podobě, jak byl odleslán.
Děkujeme za pomoc, neobtěžovali bychom, ale bez chybových hlášení nevíme, kterým směrem začít.
Kopecký
105.1 Re: Nečekaná odezva serveru
admin 23.01.2017 08:59Dobrý večer.
Pokus se vám vrací odezva 200 a žádné tělo, tak to není dobře. To musí být nějaký hodně neočekávaný tvar requestu a budeme jen rádi, když to zjistíme a opravíme. Ale k logům veřejného testu se dostanu nejdříve v pondělí.
Poradím Vám, jak postupovat v hledání problému:
a) nezačínejte se složitou WS CreateMessage - ta je pro vývojáře nejsložitější. Daleko jednodušší na zavolání je třeba služba na stažení zprávy nebo dodejky - pokud žádnou zprávu ve schránce nemáte, můžu tam nějaké naposílat.
b) stáhněte si free program SoapUI - to je prostředí pro volání webových služeb, z WSDL definice si sestavte šablony požadavků, tam lze jednoduše volat služby ISDS a sledovat odpovědi
Jestli můžete, pošlete mi ten request, který činí potíže, třeba ten problém poznám sám. Pokud ne, tak Vás v pondělí požádám o zopakování a vývojáři to prozkoumají.
Jan Šíma
ISDS
105.2 Re: Nečekaná odezva serveru
admin 23.01.2017 08:59 Attachments: Request.xml, Response.txtV pondělí to bude naprosto stačit, ani jsem nečekal, že odpovíte dříve, a byl jsem příjemně překvapen.
Přikládám request odesílaný asi úplně naposledy, 3.1.2016, 16:18:24.
Dále přikládám HTTP odpověď přijatou ze serveru (Response.txt), je to v neobvyklém tvaru, ale jsou tam dobře vidět některé informace, zejména přijaté HTTP hlavičky.
Jak jsem ho nyní kopíroval, nejméně jedna chyba v requestu mne "trkla" - element dmEncodedContent nemám uvnitř elementu dmFiles. Ale to by snad vyvolalo normální chybové hlášení.
Skoro jistě tam budou chybět nějaké povinné elementy, chtěl jsem je přidávat na základě chybových hlášení, až bych dosáhl nutného minima.
Vytvářím totiž request ručně na úrovni XML a nemám k zatím dispozici SW pro kontrolu pomocí šablony .XSD.
Klíčové je pro mne zjistit, co zabraňuje serveru poslat normální chybové hlášení - abych již mohl pokračovat sám.
Uvažoval jsem, zda také neposíláme request na nesprávnou url adresu - ale HTTP odezva cizího serveru by nerozlišovala správné heslo od nesprávného, jak jsem zmiňoval.
Podle mých zkušeností s jinými "portály" velmi nečekané odpovědi serverů někdy vyvolávají chyby v namespaces.
Pokud by nedošlo k "osvícení" logem z testu, asi bych jako další zkusil nějaký co nejprimitivnější request podle vaší chytré rady a).
Bude mi potěšením, pokud i tímto hrubým způsobem přispějeme k větší "blbuvzdornosti" vašeho serveru
Kopecký
105.2.1 Re: Re: Nečekaná odezva serveru
admin 23.01.2017 08:59 Attachments: SoupUI_pokusy.pngDobrý večer.
K Vašemu problému nejdřív obecně: nevím, jestli jste zvolil správnou cestu, jak udělat klienta ISDS. V té ukázce requestu je špatně skoro vše a mám za to, že to bude ještě dlouhá cesta.
Začněte jinak - nainstalujte si program SoapUI (http://www.soapui.org), v něm si vytvořte nový projekt a vložte WSDL soubor s definicemi webových služeb. Automaticky se vytvoří šablony requestů, a nemusíte nic postupně skládat. Můžete rovnou testovat a co funguje, pak naprogramujete stejně. Přikládám obrázek ze SoapUI, kde jsou vidět tři požadavky a odpovědi, od té nejhorší Vaší až po správnou.
Postupně:
a) komunikace s ISDS používá tzv. SOAP protokol. Jinak než v SOAP "obálce" nelze požadavek zpracovat. Máte pravdu, že ISDS by mělo odpovědět jinak (asi chybou 5xx), toto asi ani testery nenapadlo poslat. Je to to spodní okno.
b) pokud váš požadavek vložím do SOAP obálky, tak i když je syntakticky úplně špatně, jsem v tomto velmi tolerantní (ale nezneužívat!) a oznámíme rozumnou chybu, že se nenašla příloha (prostřední okno).
c) když použijete šablonu z projektu podle WSDL a vyplníte správné parametry, tak reakce je odeslání zprávy (horní okno).
Nemá cenu podrobně rozebírat, co vše je v té ukázce špatně (skoro vše), porovnejte si to s tou šablonou dle WSDL.
Pokud budete mít další problémy, neváhejte se zeptat.
Jan Šíma
ISDS
105.3 Re: Nečekaná odezva serveru
admin 23.01.2017 08:59Děkuji za vaši trpělivost.
Zdá se, že toto je ta klíčová informace - nevím, jak jsem mohl v dokumentaci přehlédnout, že WSDL použitý na ISDS vyžaduje SOAP obálku (protokol).
SOAP protokol jistěže znám a ve stejném programu jsem ho již úspěšně použil pro komunikaci s jinými internetovými "portály".
To, že v diskutovaném requestu spousta věcí chybí, nebude nijak kritické, zkoušel jsem takto vytestovat, ve kterém elementu je "zakopaný pes". Mám připravenu XML šablonu s plným tvarem CreateMessage a chybějící povinné elementy vrátím zpět.
Věřím, že po doplnění SOAP obálky již další ladění půjde dobře.
Kopecký
Děkuji za doporučení programu SoapUI, sám bych hledal nějaký tools pro práci s .WSD soubory. Některá omezení použitých prostředků mám bohužel dána přáním objednatele.