心得16--网络编程7-Url-解密IE的神秘面纱
2012-09-14 13:45
507 查看
1. URL(Uniform Resource Locator)类代表统一资源定位器,统一资源定位器是指互联网“资源”的名称。资源可以是简单的文件或目录,也可以是对跟为复杂的对象的引用,例如:对数据库或搜索引擎的查询。通常URL可以由协议名、主机、端口号和资源组成。URL的格式为“protocol://host:port/resourceName”。例如:http://ww.csdn.index.htm.
2. URL创建对象有两种:一种是绝对地址,URL url= new URL(“http://www.baidu.com”);还有一种相对地址,URL
urla= new URL(“http://www.baidu.com”);URLurl = new URL(url,“a.html”);
3. URL的方法:
以一实例来演示这些方法的简单用法。
packagecom.Url;
importjava.net.MalformedURLException;
importjava.net.URL;
publicclass Demo {
/**
* @param args
* @throws MalformedURLException
*/
publicstaticvoid main(String[] args)
throws MalformedURLException {
URL url = new URL("http://java.sun.com:80/docs/books/tutorial"
+"/index.html?name=networking#DOCWNLOADING");
//下面就是各种方法的用法:
System.out.println("filename= "+ url.getFile());
//filename=path+query
System.out.println("protocol= "+ url.getProtocol());
System.out.println("authority= "+ url.getAuthority());
//授权,公司签名 authority=host+port
System.out.println("host ="+ url.getHost());
System.out.println("port ="+ url.getPort());
System.out.println("path ="+ url.getPath());
System.out.println("query ="+ url.getQuery());
System.out.println("rel ="+ url.getRef());
//获取锚点
}
}
/*
*
执行结果
filename = /docs/books/tutorial/index.html?name=networking
protocol=
http
authority= java.sun.com:80
host= java.sun.com
port= 80
path= /docs/books/tutorial/index.html
query= name=networking
rel =DOCWNLOADING
*/
另外还有方法:
URLConnectionopenConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
InputStreamopenStream():打开与此URL的连接,并返回一个用于读取URL资源的InputStream.
4. URLDecoder类和URLEncoder类用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之间的相互转换。这就可以解释我们在用IE浏览器时地址栏中的乱码了。其实这不是乱码而是所谓的“application/x-www-form-urlencodedMIME字符串”
5. 当URL地址中含有非西欧字符的字符串时,系统会将这些非西欧字符串转换成我们认为的乱码。这里乱码与普通字符串的转换用到一下方法:
URLDecoder类中的decoder(Strings,String enc)静态方法,它可以将乱码转换成普通字符串。
URLEncoder类中的encoder(Strings,String enc)静态方法,它可以将普通字符串转换成pplication/x-www-form-urlencoded MIME字符串。
乱码转换详细请看下面实例:
packagecom.Url;
importjava.io.UnsupportedEncodingException;
importjava.net.URLDecoder;
importjava.net.URLEncoder;
publicclass TestUrl {
/**
* 演示浏览器地址栏中的‘乱码’与字符串的互相转换
* @param args
*/
publicstaticvoid main(String[] args) {
try {
//将普通字符串转换成application/x-www-form-urlencoded字符串
String str1 = URLEncoder.encode("java程序","UTF8");
System.out.println(str1);
//将application/x-www-form-urlencoded转换成字符串普通字符串
String str2 = URLDecoder.decode("编码转换成字符串:...."+"java%E7%A8%8B%E5%BA%8F","UTF-8");
System.out.println(str2);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
//返回此
throwable 的详细消息字符串。
/*e.printStackTrace(); 将此
throwable 及其追踪输出至标准错误流。
此方法将此 Throwable
对象的堆栈跟踪输出至错误输出流,作为字段 System.err
的值。
输出的第一行包含此对象的 toString()
方法的结果。
剩余行表示以前由方法 fillInStackTrace()
记录的数据*/
}
}
}
6. 需要注意的是:
仅包含西欧字符的普通字符串和pplication/x-www-form-urlencodedMIME字符串无需转换,而包含中文字符的普通字符串则需要转换。转换的方法是每个中文字符占两个字节,每个字节可以转换成两个十六进制的数字,所以每个中文字符将转换成%XX%XX的形式。当然,采用不同的字符集时,每个中文字符对应的字节数并不完全相同,所以使用URLEncoder和URLDecoder进行转换时也需要指定字符集
通过程序下载网页信息。案例分析:
packagecom.Url;
importjava.io.BufferedReader;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.net.URL;
publicclass UrlDemo {
/**
* @param args
* @throws IOException
*/
publicstaticvoid main(String[] args)
throws IOException {
URL url = new URL("http://www.baidu.com");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
FileOutputStream fos = new FileOutputStream("d:\\baidu.html");
String line = null;
while((line=br.readLine())!=null) {
fos.write(line.getBytes());
System.out.println(line);
}
fos.close();
br.close();
}
}
2. URL创建对象有两种:一种是绝对地址,URL url= new URL(“http://www.baidu.com”);还有一种相对地址,URL
urla= new URL(“http://www.baidu.com”);URLurl = new URL(url,“a.html”);
3. URL的方法:
以一实例来演示这些方法的简单用法。
packagecom.Url;
importjava.net.MalformedURLException;
importjava.net.URL;
publicclass Demo {
/**
* @param args
* @throws MalformedURLException
*/
publicstaticvoid main(String[] args)
throws MalformedURLException {
URL url = new URL("http://java.sun.com:80/docs/books/tutorial"
+"/index.html?name=networking#DOCWNLOADING");
//下面就是各种方法的用法:
System.out.println("filename= "+ url.getFile());
//filename=path+query
System.out.println("protocol= "+ url.getProtocol());
System.out.println("authority= "+ url.getAuthority());
//授权,公司签名 authority=host+port
System.out.println("host ="+ url.getHost());
System.out.println("port ="+ url.getPort());
System.out.println("path ="+ url.getPath());
System.out.println("query ="+ url.getQuery());
System.out.println("rel ="+ url.getRef());
//获取锚点
}
}
/*
*
执行结果
filename = /docs/books/tutorial/index.html?name=networking
protocol=
http
authority= java.sun.com:80
host= java.sun.com
port= 80
path= /docs/books/tutorial/index.html
query= name=networking
rel =DOCWNLOADING
*/
另外还有方法:
URLConnectionopenConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
InputStreamopenStream():打开与此URL的连接,并返回一个用于读取URL资源的InputStream.
4. URLDecoder类和URLEncoder类用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之间的相互转换。这就可以解释我们在用IE浏览器时地址栏中的乱码了。其实这不是乱码而是所谓的“application/x-www-form-urlencodedMIME字符串”
5. 当URL地址中含有非西欧字符的字符串时,系统会将这些非西欧字符串转换成我们认为的乱码。这里乱码与普通字符串的转换用到一下方法:
URLDecoder类中的decoder(Strings,String enc)静态方法,它可以将乱码转换成普通字符串。
URLEncoder类中的encoder(Strings,String enc)静态方法,它可以将普通字符串转换成pplication/x-www-form-urlencoded MIME字符串。
乱码转换详细请看下面实例:
packagecom.Url;
importjava.io.UnsupportedEncodingException;
importjava.net.URLDecoder;
importjava.net.URLEncoder;
publicclass TestUrl {
/**
* 演示浏览器地址栏中的‘乱码’与字符串的互相转换
* @param args
*/
publicstaticvoid main(String[] args) {
try {
//将普通字符串转换成application/x-www-form-urlencoded字符串
String str1 = URLEncoder.encode("java程序","UTF8");
System.out.println(str1);
//将application/x-www-form-urlencoded转换成字符串普通字符串
String str2 = URLDecoder.decode("编码转换成字符串:...."+"java%E7%A8%8B%E5%BA%8F","UTF-8");
System.out.println(str2);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
//返回此
throwable 的详细消息字符串。
/*e.printStackTrace(); 将此
throwable 及其追踪输出至标准错误流。
此方法将此 Throwable
对象的堆栈跟踪输出至错误输出流,作为字段 System.err
的值。
输出的第一行包含此对象的 toString()
方法的结果。
剩余行表示以前由方法 fillInStackTrace()
记录的数据*/
}
}
}
6. 需要注意的是:
仅包含西欧字符的普通字符串和pplication/x-www-form-urlencodedMIME字符串无需转换,而包含中文字符的普通字符串则需要转换。转换的方法是每个中文字符占两个字节,每个字节可以转换成两个十六进制的数字,所以每个中文字符将转换成%XX%XX的形式。当然,采用不同的字符集时,每个中文字符对应的字节数并不完全相同,所以使用URLEncoder和URLDecoder进行转换时也需要指定字符集
通过程序下载网页信息。案例分析:
packagecom.Url;
importjava.io.BufferedReader;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.net.URL;
publicclass UrlDemo {
/**
* @param args
* @throws IOException
*/
publicstaticvoid main(String[] args)
throws IOException {
URL url = new URL("http://www.baidu.com");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
FileOutputStream fos = new FileOutputStream("d:\\baidu.html");
String line = null;
while((line=br.readLine())!=null) {
fos.write(line.getBytes());
System.out.println(line);
}
fos.close();
br.close();
}
}
相关文章推荐
- 心得16--网络编程7-Url-解密IE的神秘面纱
- android开发笔记之网络编程—使用TCP协议和URL进行网络编程
- Android之使用TCP和URL协议进行网络编程
- 心得11--网络编程2-QQ、飞秋等聊天室部分网络编程
- Socket的网络编程和URLDecoder类和URLEncoder类
- Java基础班学习笔记(16)网络编程
- 心得14--网络编程5-Tcp文件上传与输出
- 揭开极端编程的神秘面纱: 测试驱动的编程
- 揭开HTTP网络协议神秘面纱系列
- Android网络编程之URLConnection和HttpClient访问服务器
- 揭开网络编程常见API的面纱【上】
- Android网络编程之URLConnection&HttpURLConnection
- Java 网络编程(三) 创建和使用URL访问网络上的资源
- Java网络编程之URI、URL研究(下) 01
- 黑马程序员---网络编程(TCP、MyIE、URL)
- android 网络编程 - HttpURLConnection与HttpClient
- Windows下非阻塞并发服务器的心得(适合刚学网络编程的小白看呦)
- 写网络程序要做好充分的性能分析工作--编程心得
- 揭开网络编程常见API的面纱【下】
- Android 网络编程之HttpURLConnection运用