Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / SOAP сервис от Центробанка РФ / 25 сообщений из 30, страница 1 из 2
01.12.2015, 09:51
    #39116992
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Доброго дня!
Кто-нибудь использовал сервис получения курса валют от нашего родного Центробанка?
Само описание сервиса здесь http://www.cbr.ru/scripts/Root.asp?PrtId=DWS
WSDL здесь http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL

При попытке импорта через wsimport валится ошибка
[ERROR] undefined element declaration ’s:schema’
поскольку на wildcard элементы any в wsdl указано
<s:sequence>
<s:element ref="s:schema"/>
<s:any/>
</s:sequence>

Поиски по сети особо ни к чему не привели. Все пишут, что с генерацией клиента для SOAP сервиса центробанка
средствами java проблемы, однако решений никто не дает.
Есть такая вот записка на эту тему
http://nikcode.blogspot.ru/2011/08/microsoft.html
Однако, самая суть - что в биндингах xjb там отсутствует (( Общение с автором тоже ничего не дало - статья старая, он уже ничего не помнит ((
Возможно, кто-нибудь все же решил проблему генерации клиента с помощью JAX-WS или AXIS и готов поделиться, за
что я бы был ему весьма благодарен.
...
Рейтинг: 0 / 0
01.12.2015, 10:05
    #39117006
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
rgordeev,

Их wsdl создан в Visual Studio, как и сам сервис, а у Microsoft как водится всегда свои понятия о стандартах. Надо локальную копию этого wsdl вручную привести к понимаемому axis виду и потом сгенерить по нему web service consumer.
...
Рейтинг: 0 / 0
01.12.2015, 10:06
    #39117009
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
rgordeev,

Ищите по форуму. Тут уже 3 или больше тем было с тем же вопросов. В одной из них я объяснял что нужно руками поменять в WSDL.
...
Рейтинг: 0 / 0
01.12.2015, 10:08
    #39117015
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
GarrickИх wsdl создан в Visual Studio, как и сам сервис, а у Microsoft как водится всегда свои понятия о стандартах.

Последнее время они, кстати, исправляются. Но вот с валидацией у них слабенько и юзвери могут в WSDL любую галиматью накликать.

GarrickНадо локальную копию этого wsdl вручную привести к понимаемому axis виду и потом сгенерить по нему web service consumer.
Axis тут вообще не при чем. Надо скачать WSDL, сначала прогнать валидатором, исправить ошибки, а затем уже wsimport пробовать и править ошибки, которые он показывает. В большинстве случаев можно просто <s:element ref="s:schema"/> удалить.
...
Рейтинг: 0 / 0
01.12.2015, 10:11
    #39117019
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
...
Рейтинг: 0 / 0
01.12.2015, 10:35
    #39117044
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
И. кстати, только что попробовал AXIS 1.4 немного поругался "schema already exists", но классы сгенерил. А вот wsimport генерить отказывается - говорит "кривой у вас wsdl". :)
...
Рейтинг: 0 / 0
01.12.2015, 10:52
    #39117068
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Garrick,

Axis 1.4 что-то генерить умеет? Мне казалось Axis 1.x сугубо на строках работает. Ему пофигу что там вообще в WSDL.
...
Рейтинг: 0 / 0
01.12.2015, 11:09
    #39117092
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
BlazkowiczGarrick,

Axis 1.4 что-то генерить умеет? Мне казалось Axis 1.x сугубо на строках работает. Ему пофигу что там вообще в WSDL.

WSDL2Java: Building stubs, skeletons, and data types from WSDL
...
Рейтинг: 0 / 0
01.12.2015, 23:03
    #39117893
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Спасибо всем за советы!
В общем импортировал я все это добро утилитой wsimport, добавив биндинг
Код: java
1.
wsimport -d src/main/java/ -p cbr.client -b http://www.w3.org/2001/XMLSchema.xsd -b customization.xjb -Xnocompile http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL


customization.xjb сделал вот таким
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          version="2.0">

    <globalBindings>
        <xjc:simple/>
    </globalBindings>

    <bindings scd="~xsd:complexType">
        <class name="ComplexTypeType"/>
    </bindings>

    <bindings scd="~xsd:simpleType">
        <class name="SimpleTypeType"/>
    </bindings>

    <bindings scd="~xsd:group">
        <class name="GroupType"/>
    </bindings>

    <bindings scd="~xsd:attributeGroup">
        <class name="AttributeGroupType"/>
    </bindings>

    <bindings scd="~xsd:element">
        <class name="ElementType"/>
    </bindings>

    <bindings scd="~xsd:attribute">
        <class name="attributeType"/>
    </bindings>
</bindings>


так же набросал небольшое приложение
https://github.com/rgordeev/cbr
Однако, весьма печалит, что вызов метода сервиса
Код: java
1.
GetCursOnDateXMLResponse.GetCursOnDateXMLResult result = service.getCursOnDateXML(date);


возвращет объект GetCursOnDateXMLResult в котором метод getContent() возвращает список с единственным элементом
ElementNSImpl, в котором можно получить узлы getElementsByTagName и в цикле все это добро обрабатывать.
Хочется же преобразовать все это в source scala и разбирать партером Scala
Код: java
1.
2.
3.
4.
XhtmlParser(source) \\ "root" map( c =>
            Currency(
                c \ "@Vname" text,
                c \ "@VchCode" text,
...
Рейтинг: 0 / 0
02.12.2015, 12:18
    #39118216
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Garrick,
доброго дня!

А при генерации клинта Аксисом методы доспупа тоже будут возвращать уже разобранный ответ сервера?
То есть опять будет структура из ElementNSImpl элементов, по которую нужно бегать, или ответ будет в какой-то другой форме?
...
Рейтинг: 0 / 0
02.12.2015, 16:49
    #39118624
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
rgordeevGarrick,
доброго дня!

А при генерации клинта Аксисом методы доспупа тоже будут возвращать уже разобранный ответ сервера?
То есть опять будет структура из ElementNSImpl элементов, по которую нужно бегать, или ответ будет в какой-то другой форме?

Ну, так у них же написано:
Методы веб - сервиса, названия которых оканчиваются на XML, возвращают данные в формате "простых" XML документов без использования схем и предназначены для систем построенных не на платформе .NET Framework.
Может стоит попробовать метод без XML? По описанию getCursOnDate(java.util.Calendar on_date) возвращает GetCursOnDateResponseGetCursOnDateResult , а не XML.
...
Рейтинг: 0 / 0
02.12.2015, 17:02
    #39118636
Dim666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
GarrickМожет стоит попробовать метод без XML? По описанию getCursOnDate(java.util.Calendar on_date) возвращает GetCursOnDateResponseGetCursOnDateResult , а не XML.Эти методы для .NET предназначены. Там они возвращают таблицы. И код там соответственно очень простой...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DataTable dt = DailyInfoClient.Client.GetCursOnDate(p_Date).Tables["ValuteCursOnDate"];

List<Rate> list = new List<Rate>();
foreach (DataRow r in dt.Rows)
{
	var c = new Rate
	{
		Currency = Convert.ToInt32(r["Vcode"].ToString()),
		RateValue = Convert.ToDecimal(r["Vcurs"].ToString())
	};
	list.Add(c);
}
return list;

...
Рейтинг: 0 / 0
02.12.2015, 17:36
    #39118666
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Dim666,
Ну, есть же известные способы борьбы с этим злом. Погуглите что-нибудь тип "parsing .NET dataset from java"
...
Рейтинг: 0 / 0
02.12.2015, 18:21
    #39118708
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Garrick,
возможно я открою Вам секрет, но методы без XML в конверте получают тоже, сюрприз, XML
Вот такой ответ приходит
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
---[HTTP response - http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx - 200]---
null: HTTP/1.1 200 OK
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 16199
Content-Type: text/xml; charset=utf-8
Date: Wed, 02 Dec 2015 10:33:56 GMT
Expires: -1
Pragma: no-cache
Server: nginx/1.4.6 (Ubuntu)
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetCursOnDateResponse xmlns="http://web.cbr.ru/"><GetCursOnDateResult><xs:schema id="ValuteData" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop"><xs:element name="ValuteData" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:OnDate="20151128"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="ValuteCursOnDate"><xs:complexType><xs:sequence><xs:element name="Vname" type="xs:string" minOccurs="0" /><xs:element name="Vnom" type="xs:decimal" minOccurs="0" /><xs:element name="Vcurs" type="xs:decimal" minOccurs="0" /><xs:element name="Vcode" type="xs:int" minOccurs="0" /><xs:element name="VchCode" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><ValuteData xmlns=""><ValuteCursOnDate diffgr:id="ValuteCursOnDate1" msdata:rowOrder="0"><Vname>Австралийский доллар                                                                                                                                                                                                                                          </Vname><Vnom>1</Vnom><Vcurs>47.7983</Vcurs><Vcode>36</Vcode><VchCode>AUD</VchCode></ValuteCursOnDate><ValuteCursOnDate diffgr:id="ValuteCursOnDate2" msdata:rowOrder="1"><Vname>Азербайджанский манат                                                                                                                                                                                                                                         </Vname><Vnom>1</Vnom><Vcurs>63.2960</Vcurs><Vcode>944</Vcode><VchCode>AZN</VchCode></ValuteCursOnDate><ValuteCursOnDate diffgr:id="ValuteCursOnDate3" msdata:rowOrder="2"><Vname>Фунт стерлингов Соединенного королевства                                                                                                                                                                                                                      </Vname><Vnom>1</Vnom><Vcurs>99.9352</Vcurs><Vcode>826</Vcode><VchCode>GBP</VchCode></ValuteCursOnDate><ValuteCursOnDate diffgr:id="ValuteCursOnDate4" msdata:rowOrder="3"><Vname>Армянский драм                                                                                                                                                                                                                                                </Vname><Vnom>100</Vnom><Vcurs>13.7426</Vcurs><Vcode>51</Vcode><VchCode>AMD</VchCode></ValuteCursOnDate><ValuteCursOnDate diffgr:id="ValuteCursOnDate5" msdata:rowOrder="4"><Vname>Белорусский рубль                                                                                                                                                                                                                                             </Vname><Vnom>10000</Vnom><Vcurs>36.4373</Vcurs><Vcode>974</Vcode><VchCode>BYR</VchCode></ValuteCursOnDate><ValuteCursOnDate diffgr:id="ValuteCursOnDate6" msdata:rowOrder="5"><Vname>Болгарский лев                                                                                                                                                                                                                                                </Vname><Vnom>1</Vnom><Vcurs>35.9508</Vcurs><Vcode>975</Vcode><VchCode>BGN</VchCode></ValuteCursOnDate><ValuteCursOnDate diffgr:id="ValuteCursOnDate7" msdata:rowOrder="6"><Vname>Бразильский реал                              


просто как и говорится в сообщении, выделенном курсивом, этот ответ содержит еще и схему, позволяющую клиенту на dot net его более эффективно разбирать. Для клиента на java эти вкропления схемы в каждый атрибут будут только мешать ))
Меня же интересует вот такой момент. При вызове метода сгенерированного клиента я получаю уже разобранный ответ, то есть набор элементов ElementNSImpl при чем оно не плоское в том смысле, что приходится делать как обход по узлам-тегам, так и по узлам-атрибутам, что порождает вложенные неприятные циклы. А хочется все делать по феншую так сказать, вот чего я хочу добиться ))
...
Рейтинг: 0 / 0
02.12.2015, 18:30
    #39118717
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Garrick,
на самом деле можно заморочиться и самому формировать SOAP запросы и разбирать ответы как-нибудь
вот так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SOAPMessage soapMessage = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();
SOAPPart part = soapMessage.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
SOAPBody body = envelope.getBody();
Name bodyName = envelope.createName("AllDataInfoXML", null, "http://web.cbr.ru/");
body.addBodyElement(bodyName);
soapMessage.saveChanges();

String destination = "http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx";
SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnFactory.createConnection();
SOAPMessage reply = connection.call(soapMessage, destination);


но блин, неужели в 21 веке нужно еще нужно писать кучу г на простую задачу получения плоской таблички ((
...
Рейтинг: 0 / 0
02.12.2015, 22:16
    #39118823
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
rgordeev,

У вас есть два простых способа:
1. там где в wsdl написано
Код: xml
1.
2.
3.
4.
5.
6.
<s:complexType>
    ...
      <s:element ref="s:schema"/>
      <s:any/>
       ...
</s:complexType> 


Опишите тип возвращаемого значения как положено по стандарту. Тогда wsdl2java или wsimport сгенерят вам правильный набор классов и вы будете получать в ответ не длинную XML строку, а набор объектов Java.

2. Отредактируйте сгенерённые классы таким образом, чтобы при возврате запроса эта XML строка парсилась и возвращался вместо неё какой-нибудь List, а лучше Map если вам потом из этой кучи надо отобрать какие-то типы валют.
...
Рейтинг: 0 / 0
02.12.2015, 22:18
    #39118825
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
rgordeev,

... ну и сами понимаете кого надо благодарить за весь этот геморрой.
...
Рейтинг: 0 / 0
02.12.2015, 23:15
    #39118849
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Garrick,
а что тут положено по стандарту? Какой тип нужно вешать на wildcard?
Код: xml
1.
2.
3.
4.
5.
6.
<s:complexType>
    ...
      <s:element ref="s:schema"/>
      <s:any/>
       ...
</s:complexType>


Мне кажется элемент schama тут исключительно для .net клиентов, которые используют при разборе еще и
схему. Вот генерированный объект ответа для клиентов .net
https://github.com/rgordeev/cbr/blob/master/src/main/java/cbr/client/GetCursDynamicResponse.java

Ну и кроме того, вызов соответствующего метода клиента вовсе не возвращает строку, как я и писал выше,
ответ разбирается ксерксом в набор связанных ElementImpl.
Собственно генерированный объект ответа для всех остальных клиентов, отличных от .net, вот
https://github.com/rgordeev/cbr/blob/master/src/main/java/cbr/client/GetCursOnDateXMLResponse.java
Только как его можно поправить, чтобы иметь возможность получить какую-либо другую структуру данный в ответ?
...
Рейтинг: 0 / 0
03.12.2015, 11:19
    #39119154
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
rgordeevGarrick,
а что тут положено по стандарту? Какой тип нужно вешать на wildcard?

У вас же есть схема с описанием, вы сами её привели в своём сообщении SOAP сервис от Центробанка РФ . Последняя строка состоит из описания схемы и следующим за ней набором данных. И это два разных элемента, что упрощает разбор.

Попробуйте пропустить её через JAXB/XJC оно вам ещё и Java классы нагенерит для этой структуры.

rgordeevМне кажется элемент schama тут исключительно для .net клиентов, которые используют при разборе еще и
схему.


Ну, да. И что в этом страшного? Оно же не в каком-то неизвестном бинарном файле данные возвращает, а в XML. Вполне читаемо. Через ж... конечно и не соответствует стандарту, но с M$ всегда так.
...
Рейтинг: 0 / 0
03.12.2015, 12:36
    #39119308
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
там в any лежит элемент вида
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<diffgr:diffgram xmlns="http://web.cbr.ru/" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
  xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <ValuteData xmlns="">
    <ValuteCursOnDate diffgr:id="ValuteCursOnDate1" msdata:rowOrder="0">
      <Vname>Австралийский доллар                                                                                                                                                                                                                                          </Vname>
      <Vnom>1</Vnom>
      <Vcurs>48.8271</Vcurs>
      <Vcode>36</Vcode>
      <VchCode>AUD</VchCode>
    </ValuteCursOnDate>
    <ValuteCursOnDate diffgr:id="ValuteCursOnDate2" msdata:rowOrder="1">
      <Vname>Азербайджанский манат                                                                                                                                                                                                                                         </Vname>
      <Vnom>1</Vnom>
      <Vcurs>63.4956</Vcurs>
      <Vcode>944</Vcode>
      <VchCode>AZN</VchCode>
    </ValuteCursOnDate>
...
  </ValuteData>
</diffgr:diffgram>


можно в принципе по описаниям ответов на сайте наделать классов и для нужных функций заменить any на эти классы, чтобы сразу разбиралось
...
Рейтинг: 0 / 0
03.12.2015, 14:01
    #39119436
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
ivanraтам в any лежит элемент вида

Это уже данные, а перед ними схема должна быть
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<xs:schema id="ValuteData" xmlns=""
	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
	xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
	<xs:element name="ValuteData" msdata:IsDataSet="true"
		msdata:UseCurrentLocale="true" msprop:OnDate="20151202">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="ValuteCursOnDate">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Vname" type="xs:string" minOccurs="0" />
							<xs:element name="Vnom" type="xs:decimal" minOccurs="0" />
							<xs:element name="Vcurs" type="xs:decimal" minOccurs="0" />
							<xs:element name="Vcode" type="xs:int" minOccurs="0" />
							<xs:element name="VchCode" type="xs:string" minOccurs="0" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:complexType>
	</xs:element>
</xs:schema>
...
Рейтинг: 0 / 0
03.12.2015, 15:48
    #39119601
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
Garrick,
то, что схема передается в ответе, нам не поможет. Все эти классы надо сформировать заранее.
Например:
ValuteData
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public class ValuteData {
	@XmlAccessorType(XmlAccessType.FIELD)
	public static class ValuteCursOnDate {
		@XmlElement(name="Vname")
		private String name;
		@XmlElement(name="Vnom")
		private BigDecimal nom;
		@XmlElement(name="Vcurs")
		private BigDecimal curs;
		@XmlElement(name="Vcode")
		private int code;
		@XmlElement(name="VchCode")
		private String chCode;
		// getters and setters

	}
	
	@XmlElementWrapper(name="ValuteData")
	@XmlElement(name="ValuteCursOnDate")
	private List<ValuteCursOnDate> rows = new ArrayList<ValuteCursOnDate>();
	public List<ValuteCursOnDate> getRows() {
		return rows;
	}
	public void setRows(List<ValuteCursOnDate> rows) {
		this.rows = rows;
	}
}



теперь в класс GetCursOnDateResult можно внести следующие изменения
GetCursOnDateResult
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "any"
    })
    public static class GetCursOnDateResult {
/* было
        @XmlAnyElement(lax = true)
        protected Object any;
        public Object getAny() {
            return any;
        }
        public void setAny(Object value) {
            this.any = value;
        }*/
/* стало */
        @XmlElement(name="diffgram",namespace="urn:schemas-microsoft-com:xml-diffgram-v1")
    	protected ValuteData any;
		public ValuteData getAny() {
			return any;
		}
		public void setAny(ValuteData any) {
			this.any = any;
		}
	}
    }

(я бы еще это any переименовал в какой-нибудь "dataset", соответственно надо переименовать и в propOrder)

после этого можно работать непосредственно со списком:
Код: java
1.
2.
3.
4.
		DailyInfo service1 = new DailyInfo();
		DailyInfoSoap port1 = service1.getDailyInfoSoap();
		GetCursOnDateResult result = port1.getCursOnDate(date);
		result.getAny().getRows(); // <- тут курсы валют
...
Рейтинг: 0 / 0
03.12.2015, 16:07
    #39119621
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
ivanraGarrick,
то, что схема передается в ответе, нам не поможет. Все эти классы надо сформировать заранее.

Да, конечно. Вопрос был, как я понял, "где взять описание этих классов", поэтому я указал на схему, которая передаётся в заголовке DataSet.
...
Рейтинг: 0 / 0
03.12.2015, 16:09
    #39119624
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
...хотя XJC может и классы сгенерить по схеме, надо только скопилить их и подсунуть своей программе.
...
Рейтинг: 0 / 0
03.12.2015, 16:47
    #39119689
rgordeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP сервис от Центробанка РФ
ivanra,

о, спасибо, буду пробовать
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / SOAP сервис от Центробанка РФ / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]