URL

来源:互联网 发布:c语言逻辑优先级 编辑:程序博客网 时间:2024/06/06 01:22

URL:统一资源定位符,由协议加资源名称构成,如:http://www.baidu.com,协议是http,名称就是后面的些些。

Java中构造URL的方法:


其它方法:


下面进行一些测试:

package love.jimo;import java.net.MalformedURLException;import java.net.URL;public class URLTest {public static void main(String[] args) {try {//创建URL实例URL baidu = new URL("http://www.baidu.com");//?后面是参数,#后后面是锚点URL url = new URL(baidu,"/index.html?username=jimo#test");System.out.println("主机:"+url.getHost());System.out.println("协议:"+url.getProtocol());//未指定端口号,默认使用80端口,只是这时的getPort()返回值为-1System.out.println("端口:"+url.getPort());System.out.println("默认端口号:"+url.getDefaultPort());System.out.println("URL路径:"+url.getPath());System.out.println("文件名:"+url.getFile());System.out.println("锚点:"+url.getRef());System.out.println("URL的查询部分:"+url.getQuery());} catch (MalformedURLException e) {e.printStackTrace();}}}
运行结果:

再来一个连网的例子:

package love.jimo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;public class URLTest2 {public static void main(String []args){/* * 读取百度主页 */try {URL url = new URL("http://www.baidu.com");//通过URL的openStream方法获得URL对象的资源的字节输入流InputStream is = url.openStream();//将字节输入流转换为字符输入流InputStreamReader isr = new InputStreamReader(is);//为字符输入流创建缓冲区BufferedReader br = new BufferedReader(isr);//循环读取数据String data = null;while(null != (data = br.readLine())){System.out.println(data);}//关闭输入流is.close();isr.close();br.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
运行结果:

可以看到乱码的出现,因为百度用的utf-8编码,而编译器默认的gbk,所以这样改:

<span style="white-space:pre"></span>//将字节输入流转换为字符输入流InputStreamReader isr = new InputStreamReader(is,"utf-8");
输出:

将此文件保存为HTML并用浏览器打开时也出现了乱码:


只有调整浏览器的编码了。




1 0
原创粉丝点击