Казалось бы просто веб-сервис: на входе и выходе строка:
А вот не всегда.
Иногда ответ приходит таким:
И это не баг, а фича :-)
Иногда веб-сервису кажется что такой способ обертки XML более лучший.
public String processByJavaAdapter(String data, FreeMarkerVars[] reportContext, String className) throws Exception
{
..
}
Если строка XML, то возвращается обертка в CDATA:
<ns2:processByJavaAdapterResponse xmlns:ns2="http://wsi.reg.sitronics.com/">
</ns2:processByJavaAdapterResponse>
<return><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<error>
<faultcode>Нет связи с сервером</faultcode>
<fault></fault>
</error>]]></return>
А вот не всегда.
Иногда ответ приходит таким:
<ns2:processByJavaAdapterResponse xmlns:ns2="http://wsi.reg.sitronics.com/">
<return><?xml version="1.0" encoding="UTF-8"?>
<faultcode>Нет связи с сервером</faultcode></return>
</ns2:processByJavaAdapterResponse>
И это не баг, а фича :-)
Иногда веб-сервису кажется что такой способ обертки XML более лучший.
Слово "иногда" меня пугает больше всего. Без особых причин?
ОтветитьУдалитьКак я понял, в CDATA заворачиваются большие XML конструкции.
УдалитьОпытным путем установлено, при количестве нод >=3 100% будет оборачивание в CDATA.
Кстати, пока искал, натыкался что C# веб-сервисы тоже чем-то похожим страдают, скорее всего дело в каком-то хитром стандарте.