统一资源定位符URL
周sir |
2015年5月25日 |
Java网络编程 |
0 条评论 | 1836
统一资源定位符 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
我是周sir,这是我的博客。致力于分享我学会的技术和优秀的文章。微信公众号 “周sir专栏” 欢迎大家关注。