Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Как читать фаил с сервера


Автор: Гость_Romka 24.5.2005, 12:57
а кто знает как читать фаил с сервера

Автор: AntonSaburov 24.5.2005, 13:55
Уважаемый Гость_Romka. В следующий раз для вопросов создавайте отдельную тему и задавайте свой вопрос более понятно. С какого сервера, какой файл, что стоит на сервере, что используется в качестве клиента.

Иначе ответить что-либо разумное по данному поводу просто не реально.

Автор: nerezus 21.8.2005, 21:10
Гость_Romka, через сокет по протоколу HTTP

Автор: Dancer 22.8.2005, 07:50
nerezus в принципе правильно всё сказал. Хотелось бы только кое чего уточнить.

- если работаем с каким либо специфическим протоколом (надстроенным над TCP или UDP), то читать нужно по средствам Socket или DatagramSocket

- если же, работаем с HTTP простоколом, то можно использовать тот же Socket коннекшены, но удобнее сразу использовать HttpURLConnection.

Автор: kashka 31.8.2005, 15:51
А у меня такой вопрос (можно я не буду отдельную тему создавать ;))
Как мне из локальнои сети XML файл считать?
ХML я SAXом читаю.

Автор: AntonSaburov 31.8.2005, 15:53
А теперь еще раз и понятнее. Ты же уже читаешь. Или как-то иначе надо ? Тогда подробности в студию smile

Автор: kashka 31.8.2005, 15:59
Да читать то читаю, но только если он(хмl файл) на моем компьюторе лежит вместе с dtd.
А вот если по локальной сети пробую с сервера то... не получается:
Код

java.net.MalformedURLException: no protocol: project.dtd
    at java.net.URL.<init>(Unknown Source)


Автор: LSD 31.8.2005, 16:04
Он не могет подгрузить DTD, что у тебя в !DOCTYPE?

Автор: kashka 31.8.2005, 16:06
<!DOCTYPE project SYSTEM "project.dtd">
Добавлено @ 16:07
dtd лежит в той же папке.

Автор: LSD 31.8.2005, 16:15
Можно отключить проверку с помощью documentFactory.setValidating(false), или попробовать написать так<!DOCTYPE project SYSTEM "./project.dtd">, локально это работает, а по сети нет возможности проверить.

Автор: kashka 31.8.2005, 16:18
отключать проверку я уже пробывала, не помогает smile,
второй способ сеичас попробую, о ресультатах сообщу.
Добавлено @ 16:21
неа, не помогает...
я вот думаю может с URI надо что то сделать, только я такого еше не делала и не знаю с какой стороны начать.

Автор: 02077461 26.9.2005, 16:37
kashka
При парсинге я использовал следующий код:
Код

package pack;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import java.util.*;
import java.io.*;
import javax.swing.*;

public class parser extends DefaultHandler{
    boolean isFile = false;
    static Vector result = new Vector(); 
    
    public void startElement(String uri, String name,
            String qname, Attributes attr) throws SAXException{
        if (qname.equals("file")) isFile = true;
    }
    
    public void characters(char[] buf, int affset, int len)
            throws SAXException{
        String s = new String(buf, affset, len);
        if (isFile){
            result.add(s);
            isFile = false;
        }
    }
    
    public void endElement(String uri, String name, String qname) 
            throws SAXException{}
    
    static void getFiles(DefaultListModel l, String res, DataInputStream dis){
        String str = "";
        try{
            l.setSize(0);
            parser P = new parser();
            SAXParserFactory fact = SAXParserFactory.newInstance();
            SAXParser Parser = fact.newSAXParser();
            Parser.parse(dis,P);
            for (int k = 0; k<result.size(); k++){
                l.addElement(result.get(k));
            }
            if (l.getSize()<1) l.addElement("List are empty");


        } catch (Exception e){
            System.out.println(e);
        }
    }
}

Где dis -- это тот самый socket.getInputStream();
правда у меня была простая структура xml...
Но может тебе чем - то поможет.
использование
Код

    Parser.parse(dis,P);

на мой взгляд упрощает все галиматью

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