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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получение данных с сервера 
V
    Опции темы
Swatch
Дата 30.1.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день.

Захотелось объединить методы загрузки списков данных из БД в один. 
Раньше это выглядело вот так.
клиент:
Код

public static categories_list getCategoryList() {
        try {
            // Construct data
            String data = URLEncoder.encode("LoadCategories", "UTF-8") + "=" + URLEncoder.encode("CategoryList", "UTF-8");
            // Send data
            URL url = new URL("http://localhost:8080/RS_Blog__server_/LoadServlet?" + data);
            URLConnection conn = url.openConnection();
            // Get the response
            XMLDecoder d = new XMLDecoder(new BufferedInputStream(conn.getInputStream()));
            allCategory = (categories_list) d.readObject();
            d.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return allCategory;
    }

Сервлет:
Код

protected void categoriesLoad(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/xml;charset=UTF-8");

        String d = (String) request.getParameter("LoadCategories");
        if (d != null) {
            categories_list catl = new categories_list();
            HibernateUtil.Load(catl);
            if (d.equals("CategoryList")) {
                XMLEncoder e = new XMLEncoder(
                        new BufferedOutputStream(response.getOutputStream()));
                System.out.println(catl);
                e.writeObject(catl);
                e.close();
            }
        }
    }


Сейчас сделала так.
клиент:
Код

public static IList getLists(IList lists) {
        try {
            // Send the request
            URL url = new URL("http://localhost:8080/RS_Blog__server_/LoadServlet");
            URLConnection conn = url.openConnection();
            conn.setRequestProperty("Content-Type", "application/x-java-serialized-object");
            conn.setDoOutput(true);
            XMLEncoder e = new XMLEncoder(
                        new BufferedOutputStream(conn.getOutputStream()));
            e.writeObject(lists);            
            e.close();
            
            // Get the response
            XMLDecoder d = new XMLDecoder(new BufferedInputStream(conn.getInputStream()));
            loading_list = (IList)d.readObject();
            System.out.println(loading_list);
            d.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return loading_list;
    }


сервлет:
Код

protected void loadLists(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        XMLDecoder d = new XMLDecoder(new BufferedInputStream(request.getInputStream()));
        IList lists = (IList) d.readObject();
        HibernateUtil.Load(lists);
        d.close();

        XMLEncoder e = new XMLEncoder(
                new BufferedOutputStream(response.getOutputStream()));//new FileOutputStream ("C:\\test.xml")));
        System.out.println(lists);
        e.writeObject(lists);
        e.close();
    }


В итоге, список передается, только, непонятно почему, пустой... пыталась передать с сервлета просто в хмл-ину, там весь список, в нормальном состоянии... а к клиенту почему-то доходит пустой список... если на клиенте вместо этого:
Код

conn.getInputStream()

поставить вот это:
Код

new FileInputStream("C:\\clienttest.xml");

то возникает ошибка:
Код


org.xml.sax.SAXParseException: Premature end of file.
Continuing ...
java.util.NoSuchElementException
        at java.util.Vector.lastElement(Vector.java:456)
        at com.sun.beans.ObjectHandler.lastExp(ObjectHandler.java:134)
        at com.sun.beans.ObjectHandler.dequeueResult(ObjectHandler.java:138)
        at java.beans.XMLDecoder.readObject(XMLDecoder.java:201)
        at com.solovatsoft.rs_blog.businessLogic.ConnectToServer.getLists(ConnectToServer.java:98)


У кого-нибудь есть соображения по этому поводу? кто-то с таким сталкивался? Буду очень признательна за дельные советы.... возможно, я опять какую-то строку пропустила... :(
PM MAIL   Вверх
LSD
Дата 30.1.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Попробуй для начала записать response.getOutputStream() в файл, и посмотри что там будет записано.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Swatch
Дата 30.1.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



записывала... получается нормальная хмл-ка... в ней список из 3-х элементом... вот я и думаю, где-то на клиенте, наверное, накосячила... smile 
вот хмл-ка, какая получается при этом:
Код

<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.6.0" class="java.beans.XMLDecoder"> 
 <object class="com.company.proj.data.lists.authors_list"> 
  <void property="list"> 
   <object class="java.util.ArrayList"> 
    <void method="add"> 
     <object class="com.company.proj.data.author"> 
      <void property="id"> 
       <long>1</long> 
      </void> 
      <void property="name"> 
       <string>Author 1</string> 
      </void> 
     </object> 
    </void> 
    <void method="add"> 
     <object class="com.company.proj.data.author"> 
      <void property="id"> 
       <long>2</long> 
      </void> 
      <void property="name"> 
       <string>Author 2</string> 
      </void> 
     </object> 
    </void> 
    <void method="add"> 
     <object class="com.company.proj.data.author"> 
      <void property="id"> 
       <long>3</long> 
      </void> 
      <void property="name"> 
       <string>Author 3</string> 
      </void> 
     </object> 
    </void> 
   </object> 
  </void> 
 </object> 
</java> 

PM MAIL   Вверх
Swatch
Дата 30.1.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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


 




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


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

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