Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > как передать клиенту хмл-ку


Автор: Swatch 18.1.2008, 10:18
Добрый день.

задача состоит в следующем: на сервере есть база, клиент отправляет запрос загрузить данные из таблицы авторов.
Код

 try {
            // Construct data
            String data = URLEncoder.encode("LoadAuthors", "UTF-8");
            // Send data
            URL url = new URL("http://localhost:8080/RS-Blog__server_/AuthorServlet");
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(data);
            wr.flush();

далее сервер загружает список с помощью хибернейт и кодирует его в хмл 
Код

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

        String d = (String) request.getAttribute("LoadAuthors");
        if (d != null) {
            authors_list al = new authors_list();
            HibernateUtil.Load(al);
            XMLEncoder e = new XMLEncoder(
                    new BufferedOutputStream(
                    new FileOutputStream("Authors.xml")));
            e.writeObject(al);
            e.close();
         }
    }


и должен переслать клиенту... не понимаю, как переслать клиенту хмл и как клиент должен ее получить... подскажите, пожалуйста!!!  smile 


Автор: Tony 18.1.2008, 10:55
na servere
Код

XMLEncoder e = new XMLEncoder(
                    new BufferedOutputStream(response.getOutputStream());

u klenta:
budet prosto nado budet otkrit' inputstream i 4itat' massivom bajtov v fail(ili kuda nedo)

Автор: Swatch 18.1.2008, 13:11
но мне не надо, чтобы был массив байт или файл, мне надо из закодированной хмл-ки получить List, который был закодирован на сервере, чтобы потом этот  List можно было использовать....  smile 

Автор: Swatch 18.1.2008, 13:33
клиент:
Код

public static categories_list geCategoryList() {
        OutputStreamWriter wr;
        try {
            // Construct data
            String data = URLEncoder.encode("LoadCategories", "UTF-8");
            // Send data
            URL url = new URL("http://localhost:8080/RS-Blog__server_/CategoryServlet");
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(data);
            wr.flush();

            // Get the response
            XMLDecoder d = new XMLDecoder(new BufferedInputStream(
                    conn.getInputStream()));
            allCategory = (categories_list) d.readObject();
            d.close();
            wr.close();
        }
        catch (Exception e) {
        }
        return allCategory;
    }
}


сервер:
Код

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

        HibernateUtil.getSessionFactory();
        category cat = new category();
        cat.setTitle("title1");
        HibernateUtil.Save(cat);

        String d = (String) request.getAttribute("LoadCategories");
        if (d != null) {
            categories_list catl = new categories_list();
            HibernateUtil.Load(catl);
            XMLEncoder e = new XMLEncoder(
                    new BufferedOutputStream(response.getOutputStream()));
            e.writeObject(catl);
            e.close();
        }
    }

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


При запуске клиента возникает такая ошибка:
Код

org.xml.sax.SAXParseException: Premature end of file.
Continuing ...
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


Кто-нибудь знает, почему????

Автор: Swatch 18.1.2008, 14:07
или вот аткую ошибку выкидывает:
Код

java.lang.Exception: Unrecognized opening tag: html 
Continuing ...
java.lang.Exception: Unrecognized opening tag: head 
Continuing ...
java.lang.Exception: Unrecognized opening tag: title 
Continuing ...
java.lang.Exception: Unrecognized closing tag: title
Continuing ...
java.lang.Exception: Unrecognized closing tag: head
Continuing ...
java.lang.Exception: Unrecognized opening tag: body 
Continuing ...
java.lang.Exception: Unrecognized opening tag: h1 
Continuing ...
java.lang.Exception: Unrecognized closing tag: h1
Continuing ...
java.lang.Exception: Unrecognized opening tag: h2 
Continuing ...
java.lang.Exception: Unrecognized closing tag: h2
Continuing ...
java.lang.Exception: Unrecognized opening tag: h3 
Continuing ...
java.lang.Exception: Unrecognized closing tag: h3
Continuing ...
java.lang.Exception: Unrecognized closing tag: body
Continuing ...
java.lang.Exception: Unrecognized closing tag: html
Continuing ...
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


Автор: v2v 18.1.2008, 14:16
выведи на клиенте просто InputStream что бы посмотреть какой у тебя хмл приехал. увидешь, думаю найдёшь ошибку.

Автор: Swatch 18.1.2008, 14:37
попыталась вывести просто инпутСтрим, все равно та же ошибка:
Код

org.xml.sax.SAXParseException: Premature end of file.
Continuing ...


прочитала на одном форуме, что надо поменять кодировку томкэту:
Tomcat->Properties->Java VM->Java Options: -Dfile.encoding=UTF-8

кто-нибудь знает, где это вписать??? поискала по папке с томкэтом - не нашла:(

Автор: v2v 18.1.2008, 14:45
сие есть не то, кажется.

у тебя всё равно отрабатывает парсер... на клиенте
такая ошибка возникает в двух случаях:
- не доконца прочитанный хмл в поток;
- ты уже прочитала до этого читала поток , тоесть достигнут конец потока и ты опять пытаешься его читать.

Добавлено через 1 минуту и 30 секунд
Код

String k="";
while((k=conn.getInputStream())!=null){
System.out.println(k);
}

это ты на клиенте делаешь что - бы посотмреть хмл?

Автор: Tony 18.1.2008, 22:37
posmotri klassi: XMLEncoder i XMLDecoder

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)