Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> spring-ws 
:(
    Опции темы
ratzko
Дата 6.8.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 5.7.2007
Где: Estonia, Tallinn

Репутация: нет
Всего: нет



начал изучать spring web services

написал следующий код: 

Код

public class Client extends WebServiceGatewaySupport {
    
    private Resource request;
    private String action;
    
    public void setRequest(Resource request) {
        this.request = request;
    }
    
    public void setAction(String action) {
        this.action = action;
    }
    
    public void quotes() throws IOException {
        Source requestSource = new ResourceSource(request);
        StringResult result = new StringResult();
        getWebServiceTemplate().sendSourceAndReceiveToResult(requestSource, new SoapActionCallback(action), result);
        FileWriter writer = new FileWriter("settings.xml");
        writer.write(result.toString()
                    .replace("&lt;", "<")
                    .replace("&gt;", ">"));
        writer.close();
        System.out.println(result);
    }

    public static void main(String[] args) throws IOException {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("webmedia-service.xml", Client.class);
        Client stockClient = (Client) applicationContext.getBean("stockClient");
        stockClient.quotes();
    }
    
}


Код

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
            
    <bean id="stockClient" class="service.Client">
        <property name="defaultUri" value="http://www.webserviceX.NET/stockquote.asmx"/>
        <property name="request" value="classpath:quotesRequest.xml"/>
        <property name="action" value="http://www.webserviceX.NET/GetQuote"/>
        
    </bean>
</beans>


Код

<GetQuote xmlns="http://www.webserviceX.NET/">
    <symbol>GOOG</symbol>
</GetQuote>


получаю следующий XML: 

Код

<GetQuoteResponse xmlns="http://www.webserviceX.NET/">
    <GetQuoteResult>
        <StockQuotes>
            <Stock>
                <Symbol>GOOG</Symbol>
                <Last>479.85</Last>
                <Date>8/5/2008</Date>
                <Time>4:00pm</Time>
                <Change>+16.85</Change>
                <Open>467.89</Open>
                <High>480.08</High>
                <Low>466.33</Low>
                <Volume>3584321</Volume>
                <MktCap>150.6B</MktCap>
                <PreviousClose>463.00</PreviousClose>
                <PercentageChange>+3.64%</PercentageChange>
                <AnnRange>412.11 - 747.24</AnnRange>
                <Earns>15.216</Earns>
                <P-E>30.43</P-E>
                <Name>GOOGLE</Name>
            </Stock>
        </StockQuotes>
    </GetQuoteResult>
</GetQuoteResponse>



мне из етого XML'a нузно только зна4ение тэга <Last/>! как его мозно полу4ить?
PM MAIL   Вверх
ratzko
Дата 6.8.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 5.7.2007
Где: Estonia, Tallinn

Репутация: нет
Всего: нет



Как я понял мне надо вместо getWebServiceTemplate().sendSourceAndReceiveToResult(requestSource, new SoapActionCallback(action), result) исползовать getWebServiceTemplate().marshalSendAndReceive(..). Так ли это? И если так мозет кто-нибудь обяснить как этот метод использовать или дать примеры его использования!?
PM MAIL   Вверх
sarjsheff
Дата 11.8.2008, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 6.7.2006
Где: Moscow

Репутация: 1
Всего: 1



Можно без маршалинга, просто отпарсить в DOM и вытянуть все что нужно. 


Код

        static public Document getDOM(String in) {
                    try {
                            InputStream ins = new ByteArrayInputStream(in.getBytes());
    
                            return getDOM(ins);
                    } catch (Exception pce) {
                            pce.printStackTrace();
                            return null;
                    }
            }
    
            static public Document getDOM(InputStream in) {
                    try {
                            DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
                            documentFactory.setNamespaceAware(true);
                            documentFactory.setValidating(false);
    
                            DocumentBuilder docBuilder = documentFactory.newDocumentBuilder();
                            // docBuilder.setEntityResolver(new NoEntityResolver());               
                            return docBuilder.parse(in);
                            } catch (Exception pce) {
                            pce.printStackTrace();
                            return null;
                    }
            }


У себя в коде.

Код

getWebServiceTemplate().sendSourceAndReceiveToResult(requestSource, new SoapActionCallback(action), result);
Document doc = getDOM(result.toString());
String Last = doc.getElementsByTagName("Last")[1].getNodeText();


Где то примерно так в doc.getElementsByTagName("Last")[1].getNodeText(); мог напутать не проверял. Смотри тут как с Documentом работать.
PM MAIL WWW   Вверх
ratzko
Дата 11.8.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 5.7.2007
Где: Estonia, Tallinn

Репутация: нет
Всего: нет



Спасибо! Работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1145 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.