统一资源定位符URL

    |     2015年5月25日   |   Java网络编程   |     0 条评论   |    1835

统一资源定位符 URL(Uniform Resource Locator)是 WWW 客户机访问 Internet 时用来标识资源的名字和地址。超文本链路靠 URL 维持,格式是:

<METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE>

其中 METHOD 是传输协议;HOSTNAME 是文档所在主机名(DNS 点地址);PORT 是服务端口(可省略);PATH 是路径,FILE 是文件名。例如 http://www.xinhua.net/、http://www.xinhua.net/view/6079.html。

一、URL 类

java.net.URL 的一个对象可以表示一个网络资源,用来寻址、定位连接、在客户机与服务器之间直接访问。常用构造方法是 URL(String s),s 指出网络中的一个资源。创建时可能抛出 MalformedURLException,所以应放在 try…catch 里:

URL myURL;
try {
    myURL = new URL("http://www.xinhua.net:80/");
} catch (MalformedURLException e) {
    System.out.println("有错的 URL: " + e);
}

二、URLConnection 类

要接收和发送信息还要用 URLConnection。获得该对象相当于完成对指定 URL 的一次 HTTP 连接:先创建 URL,再调用 openConnection()。

URL mu = new URL("http://www.sun.com/");
URLConnection muC = mu.openConnection();
方法 作用
getOutputStream() 获得向远程主机发送信息的输出流
getInputStream() 获得从远程主机读取信息的输入流
connect() 建立网络连接

三、用数据流读网页

发送和接收都要先拿到流对象,再包装成缓冲输入/输出流。网上资源用完后应及时关闭,例如 dis.close()。

【例 13-2】从文本框读取网址,用数据流读网页内容。原文有若干拼写错误(如 openConnectin、JTextFileld),下面按可运行写法更正:

import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class Example10_2 {
    public static void main(String args[]) {
        new DownNetFile();
    }
}
class DownNetFile extends JFrame implements ActionListener {
    JTextField infield = new JTextField(30);
    JTextArea showArea = new JTextArea();
    JButton b = new JButton("download");
    JPanel p = new JPanel();
    DownNetFile() {
        super("read network text file application");
        Container con = this.getContentPane();
        p.add(infield);
        p.add(b);
        JScrollPane jsp = new JScrollPane(showArea);
        b.addActionListener(this);
        con.add(p, "North");
        con.add(jsp, "Center");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 400);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        readByURL(infield.getText());
    }
    public void readByURL(String urlName) {
        try {
            URL url = new URL(urlName);
            URLConnection tc = url.openConnection();
            tc.connect();
            InputStreamReader in = new InputStreamReader(tc.getInputStream());
            BufferedReader dis = new BufferedReader(in);
            String inline;
            while ((inline = dis.readLine()) != null) {
                showArea.append(inline + "\n");
            }
            dis.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

readByURL() 的过程:用网址创建 URL → openConnection() 得到连接 → connect() → 包装成 BufferedReader → readLine() 读文本。

一句话总结:URL 负责定位资源,URLConnection.openConnection 拿到流,读完记得关闭。

转载请注明来源:统一资源定位符URL
本文链接地址:https://ai.zhousir.top/?p=687
回复 取消