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


Автор: Noviy 8.4.2008, 23:41
Как прочитал, URL создаётся так:
1) Вызвать метод OpenConnection();
2) Указать свойства запроса
3) Установить соеденение с удалённым ресурсом
4) После подключения к серверу доступны поля заголовка - обрабатываем
5) Имеем доступ к данным getInputStream();

При нажатии кнопки, должно устанавливаться соеденение по указаному адресу. Решил я это реализовать через обработку событий кнопки. 
Код

//Обработчик для кнопки
        buttonGO.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                //urlName.setText("http://www.seti.kr.ua");
                URL url = new URL("http://www.seti.kr.ua");
                URLConnection connection = url.openConnection(); //1
                connection.setDoInput(true);                                    //2
                connection.connect();                                                //3
                
            }
        });    

Скажем соеденяться оно по идее должно, но в практике нет (ошибки ) :(

Вылаживаю исходник - помогите пожалуйста smile

Автор: Kangaroo 9.4.2008, 00:15
Цитата(Noviy @  8.4.2008,  23:41 Найти цитируемый пост)
Скажем соеденяться оно по идее должно, но в практике нет (ошибки ) :(

какие ошибки???

Автор: COVD 9.4.2008, 06:29
Noviy, запрос на сервер отправляется в момент перехода к чтению ответа сервера (пункт 5 вашего списка). Про это двумя постами ниже http://forum.vingrad.ru/forum/topic-202577.html

Автор: Noviy 9.4.2008, 17:37
Спасибо, с  запросом оказывается всё просто. Теперь чтение информации. 
Код

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine = null;
          while ((inputLine = in.readLine()) != null) {
          System.out.println("inputLine = "+inputLine );
        }
                }

                catch (Exception e) {}
                
            }


Хотел проще сделать, но матюкается :(  Почему?
Код

InputStream in = new conn.getInputStream()
while ((inputLine = in.readLine()) != null) {
          System.out.println("inputLine = "+inputLine );
        }
                }

                catch (Exception e) {}
                
            }

Если я правильно понял, BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); - это чтение из буфера?

Автор: LSD 10.4.2008, 11:53
Цитата(Noviy @  9.4.2008,  18:37 Найти цитируемый пост)
Если я правильно понял, BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); - это чтение из буфера?

Нет, это чтение с буферизацией и только. А вообще существует Java doc, где для каждого класса есть описание.


Цитата(Noviy @  9.4.2008,  18:37 Найти цитируемый пост)
Хотел проще сделать, но матюкается :(  Почему?

По твоему все должны протелепатить, что там у тебя за ошибка?

Автор: Noviy 11.4.2008, 10:08
Разобрался smile .Теперь осталось вывести содержимое. 
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class JBros 
{
// Главное окно
    public static void main (String[] args)
        {
            Window frame = new Window();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        
}

class Window extends JFrame 
{

    public Window()
    {
    // Определение размеров экрана
    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension screenSize = kit.getScreenSize();
    int screenHeight = screenSize.height;
    int screenWidth = screenSize.width;
    
    //=======================================================
    
    //Размещение фрейма по центру экрана
    
    setSize (screenWidth / 2, screenHeight / 2);
    setLocation (screenWidth / 4, screenHeight / 4);
    
    //========================================================
    
    //Установка пиктограммы и заголовка окна
    
        setTitle("JBros");
        Image img = kit.getImage("icon.gif");
        setIconImage(img);
        
    //=======================================================    
        
        // Меню
        JMenu fileMenu = new JMenu("File");
        //Подменю с обработкой событий        
        fileMenu.add(new AbstractAction("Close")
        {
            public void actionPerformed(ActionEvent event)
            {
                System.exit(0);
            }    
        });
        
        //Меню        
        JMenu helpMenu = new JMenu("Help");
        //Подменю с обработкой событий
        helpMenu.add(new AbstractAction("About")
        {
            public void actionPerformed(ActionEvent event)
            {
            HelpWin helpWin = new HelpWin();
            helpWin.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); //Закрыватем вторичные окна.
            helpWin.setVisible(true);
            }
        });
        // Добавления гл. меню.
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(fileMenu);
        menuBar.add(helpMenu);
        
        // Ст рока ввода адреса
        JLabel labelA = new JLabel("URL:");
        final JTextField urlName = new JTextField(20);
                
        
        //Кнопка с обработчиком событий
        JButton buttonGO = new JButton("GO");
        
        JPanel adress = new JPanel();
        adress.add(labelA);
        adress.add(urlName);
        adress.add(buttonGO);
        
        //Строка ввода адреса
        JPanel contentPane = new JPanel (new BorderLayout());
        setContentPane(contentPane);
        contentPane.add(adress, BorderLayout.NORTH);
        
        
        //Область для вывода страницы.
        JTextArea okno = new JTextArea();
        okno.setBackground(Color.white);
        add(new JScrollPane(okno));
        contentPane.add(okno,BorderLayout.CENTER);
        
        
        //Обработчик для кнопки
        buttonGO.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                try 
                {   
                    // Конект
                    URL url = new URL("http://www.seti.kr.ua");
                    URLConnection conn = url.openConnection();
                     // Чтение инфы с сервера
                    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    
                    //Вывод содержимого
                    String inputLine = null;
                    while ((inputLine = in.readLine()) != null) 
                    {
                        final okno = new setInputStream(inputLine);
                        //System.out.println(inputLine);
                    }
                }

                catch (Exception e) {}
                
            }
        });    
        
        
        
        
                
    }
    
}    
// Класс для окна Help
class HelpWin extends JFrame
{
    public HelpWin()
    {
    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension screenSize = kit.getScreenSize();
    int screenHeight = screenSize.height;
    int screenWidth = screenSize.width;
    setLocation (screenWidth / 4, screenHeight / 4);    
        
        JPanel panel = new JPanel();
        setTitle("About Program");
        Image img = kit.getImage("icon.gif");
        setIconImage(img);
        setSize(WIDTH, HEIGHT);
        panel.setVisible(true);
        
        JLabel label=new JLabel("  JBros; version 0.1t;  Pogoreliy Ihor;  contact: [email protected]");
        label.setFont(new Font("Arial",Font.BOLD, 14));
        add(label, BorderLayout.CENTER);
        
    }
    public static final int WIDTH = 425;
    public static final int HEIGHT = 100;
}


Я хочу вывести содержимое inputLine в okno, которое имеет тип JTextArea.
Код

while ((inputLine = in.readLine()) != null) 
                    {

//Не могу разобраться с синтаксисом, как правильно реализовать. 
                        InputStream hz =  okno.setInputStream(inputLine); 
                        //System.out.println(inputLine);
                    }
                }

                catch (Exception e) {}
                
            }
        });     

Или есть специальные функции для преобрасования html кода и область для его вывода? 

Автор: Noviy 15.4.2008, 08:17
Подскажите какими функциями, правильно,   вывести вэб содержимое и  куда? ?

Автор: LSD 15.4.2008, 11:16
Выведи его в /dev/null.

Автор: Noviy 15.4.2008, 16:42
смешно  smile 

Автор: LSD 15.4.2008, 18:35
Пока ты нормально не объяснишь что и куда ты хочешь вывести, то и нормального ответа не получишь.

Автор: Noviy 16.4.2008, 08:22
Я считываю с сервера информацию, html код. Я хочу что бы он отображался в окне (каком-нибудь) в виде вэб страници. как это реализовать?

Автор: LSD 16.4.2008, 11:57
HTML умеет отображать JTextPane, тебе надо распарсить HTML с помощью HTMLEditorKit и получившися документ "скормить" JTextPane. Только учти, что JTextPane имеет очень ограниченную поддержку HTML.

Автор: Noviy 16.4.2008, 15:24
спасибо

Автор: Noviy 17.4.2008, 13:08
Цитата(LSD @ 16.4.2008,  11:57)
HTML умеет отображать JTextPane, тебе надо распарсить HTML с помощью HTMLEditorKit и получившися документ "скормить" JTextPane. Только учти, что JTextPane имеет очень ограниченную поддержку HTML.

  :(  не получается. smile 

Автор: LSD 17.4.2008, 17:34
Цитата(Noviy @  17.4.2008,  14:08 Найти цитируемый пост)
:(  не получается.

Ты что-то неправильно делаешь.

Автор: Goganchic 17.4.2008, 17:40
Noviy, выложи сырки того как ты делаешь и тебе скорее всего ответят почему у тебя не получается ;)

Автор: Noviy 29.4.2008, 23:53
вот код. Помогите  smile  , нужно отобразить вэб страничку самым простым способом. .
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class JBros 
{
// Главное окно
    public static void main (String[] args)
        {
            Window frame = new Window();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        
}

class Window extends JFrame 
{

    public Window()
    {
    // Определение размеров экрана
    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension screenSize = kit.getScreenSize();
    int screenHeight = screenSize.height;
    int screenWidth = screenSize.width;
    
    //=======================================================
    
    //Размещение фрейма по центру экрана
    
    setSize (screenWidth / 2, screenHeight / 2);
    setLocation (screenWidth / 4, screenHeight / 4);
    
    //========================================================
    
    //Установка пиктограммы и заголовка окна
    
        setTitle("JBros");
        Image img = kit.getImage("icon.gif");
        setIconImage(img);
        
    //=======================================================    
        
        // Меню
        JMenu fileMenu = new JMenu("File");
        //Подменю с обработкой событий        
        fileMenu.add(new AbstractAction("Close")
        {
            public void actionPerformed(ActionEvent event)
            {
                System.exit(0);
            }    
        });
        
        //Меню        
        JMenu helpMenu = new JMenu("Help");
        //Подменю с обработкой событий
        helpMenu.add(new AbstractAction("About")
        {
            public void actionPerformed(ActionEvent event)
            {
            HelpWin helpWin = new HelpWin();
            helpWin.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); //Закрыватем вторичные окна.
            helpWin.setVisible(true);
            }
        });
        // Добавления гл. меню.
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(fileMenu);
        menuBar.add(helpMenu);
        
        // Ст рока ввода адреса
        JLabel labelA = new JLabel("URL:");
        final JTextField urlName = new JTextField(20);
                
        
        //Кнопка с обработчиком событий
        JButton buttonGO = new JButton("GO");
        
        JPanel adress = new JPanel();
        adress.add(labelA);
        adress.add(urlName);
        adress.add(buttonGO);
        
        //Строка ввода адреса
        JPanel contentPane = new JPanel (new BorderLayout());
        setContentPane(contentPane);
        contentPane.add(adress, BorderLayout.NORTH);
        
        
        //Область для вывода страницы.
        JTextPane okno = new JTextPane();
        okno.setBackground(Color.white);
        add(new JScrollPane(okno));
        contentPane.add(okno,BorderLayout.CENTER);
        
        
        //Обработчик для кнопки
        buttonGO.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                try 
                {   
                    // Конект
                    URL url = new URL("http://www.seti.kr.ua");
                    URLConnection conn = url.openConnection();
                     // Чтение инфы с сервера
                    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    
                    //Вывод содержимого
                    String inputLine = null;
                    while ((inputLine = in.readLine()) != null) 
                    {
                        
                        //System.out.println(inputLine);
                        
                    }
                }

                catch (Exception e) {}
                
            }
        });    
        
        
        
        
                
    }
    
}    
// Класс для окна Help
class HelpWin extends JFrame
{
    public HelpWin()
    {
    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension screenSize = kit.getScreenSize();
    int screenHeight = screenSize.height;
    int screenWidth = screenSize.width;
    setLocation (screenWidth / 4, screenHeight / 4);    
        
        JPanel panel = new JPanel();
        setTitle("About Program");
        Image img = kit.getImage("icon.gif");
        setIconImage(img);
        setSize(WIDTH, HEIGHT);
        panel.setVisible(true);
        
        JLabel label=new JLabel("  JBros; version 0.1t;  Pogoreliy Ihor;  contact: [email protected]");
        label.setFont(new Font("Arial",Font.BOLD, 14));
        add(label, BorderLayout.CENTER);
        
    }
    public static final int WIDTH = 425;
    public static final int HEIGHT = 100;
}



Автор: Noviy 30.4.2008, 22:31
up
подскажите хоть, как inputLine скормить JTextPane.

Автор: LSD 4.5.2008, 13:14
Цитата(Noviy @  30.4.2008,  23:31 Найти цитируемый пост)
подскажите хоть, как inputLine скормить JTextPane.

Код

JEditorPane editorPane = new JTextPane();
HTMLEditorKit htmlEditorKit = new HTMLEditorKit();
htmlEditorKit.read(inputStream, editorPane.getDocument(), 0);

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