Java中基于HTTP协议网络编程

 java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来访问Web服务功能,这篇博客,就跟大家分享一下,Java中的网络编程的知识,主要是学习下该java.net包下的API。


 URI——>URL

 URI:表示的是统一的资源标识,它是以某种统一的方式标识资源的简单字符串。这种字符串以scheme开头。

 URL:表示统一的资源定位器的任务,URL是一种URI。

 URN:一般不能为资源提供持久不变的名称,这是统一的资源命名的任务。URN也是一种URI,但它是全球唯一的、持久不变的,即使资源不再存在或不再使用。


 URL类

 URL类代表一个统一资源定位符,资源可以是简单的目录,也可以是复杂的对象,例如对数据库或搜索引擎的查询。

 URL类为我们提供了不同的构造方法

 1.根据地址构造URL

 public URL(String spec);——————————————URL url=new URL("www.baidu.com")

 2.根据协议、主机名、端口和文件创造

 public URL(String protocol,String host,int port,String file)


 URL封装对象信息

 URL对象封装了一些对象的信息,比如URL对象的端口号、头内容、主机名、协议名称等

[java]  view plain copy print ?
  1. <span style="font-family:Comic Sans MS;font-size:18px;">/**      
  2.  * @FileName: URLTest.java    
  3.  * @Package:com.socket    
  4.  * @Description: TODO   
  5.  * @author: LUCKY     
  6.  * @date:2015年12月11日 上午8:48:34    
  7.  * @version V1.0      
  8.  */  
  9. package com.socket;  
  10.   
  11. import java.awt.image.ImageProducer;  
  12. import java.net.URL;  
  13.   
  14. /** 
  15.  * @ClassName: URLTest 
  16.  * @Description: TODO 
  17.  * @author: LUCKY 
  18.  * @date:2015年12月11日 上午8:48:34 
  19.  */  
  20. public class URLTest {  
  21.     public static void main(String[] args) {  
  22.         try {  
  23.             //根据地址创建  
  24.             URL url=new URL("http://ww2.sinaimg.cn/large/70c8c5b7gw1erdli8ka8vj21360m1ju9.jpg");  
  25.             //取得信息  
  26.             System.out.println(url.getAuthority());  
  27.             System.out.println(url.getPath());  
  28.             System.out.println(url.getPort());  
  29.             System.out.println(url.getDefaultPort());  
  30.             System.out.println(url.getFile());  
  31.             System.out.println(url.getProtocol());  
  32.             Object o=url.getContent();  
  33.             if(o instanceof ImageProducer){  
  34.                 ImageProducer i=(ImageProducer)o;  
  35.                 System.out.println(i);  
  36.             }  
  37.               
  38.         } catch (Exception e) {  
  39.             // TODO: handle exception  
  40.         }  
  41.     }  
  42. }  
  43. </span>  

URLConnection网页连接类

 有了URL后,如何来与网页进行连接呢,这时候就需要URLConnection类来为我们服务。它代表应用程序和URL之间的通信连接。通常创建RUL连接需要以下几个步骤。

 1.通过在URL上调用openConnection()方法创建链接对象。

 2.设置请求参数的一般请求属性

 常用的属性有是否运行用户交互、是否可以输入输出、是否启用缓存等

 3.使用connect()方法建立到远程对象的实际连接

 4.在建立到远程对象的连接后,获取访问的字段和内容

 比如获取文件的类型、文件的创建时间、文件的过期时间、文件的长度等

 5.最后需要关闭连接

[java]  view plain copy print ?
  1. <span style="font-family:Comic Sans MS;font-size:18px;">/**      
  2.  * @FileName: URLConnectionTest.java    
  3.  * @Package:com.socket    
  4.  * @Description: TODO   
  5.  * @author: LUCKY     
  6.  * @date:2015年12月11日 上午8:54:24    
  7.  * @version V1.0      
  8.  */  
  9. package com.socket;  
  10.   
  11. import java.io.BufferedOutputStream;  
  12. import java.io.FileOutputStream;  
  13. import java.io.InputStream;  
  14. import java.net.URL;  
  15. import java.net.URLConnection;  
  16.   
  17. import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;  
  18.   
  19. /**   
  20.  * @ClassName: URLConnectionTest    
  21.  * @Description: TODO   
  22.  * @author: LUCKY   
  23.  * @date:2015年12月11日 上午8:54:24      
  24.  */  
  25. public class URLConnectionTest {  
  26.   
  27.     public static void main(String[] args) throws Exception {  
  28.         try {  
  29.             //根据地址创建URL  
  30.             URL url=new URL("http://ww2.sinaimg.cn/large/70c8c5b7gw1erdli8ka8vj21360m1ju9.jpg");  
  31.             //获得urlConnecion  
  32.             URLConnection connection=url.openConnection();  
  33.             //打开连接  
  34.             connection.connect();  
  35.             //取得属性  
  36.             System.out.println(connection.getContentLength());  
  37.             System.out.println(connection.getContentType());  
  38.             System.out.println(connection.getDate());  
  39.             System.out.println(connection.getExpiration());  
  40.             System.out.println(connection.getLastModified());  
  41.             //读取网页数据  
  42.             int c;  
  43.             InputStream is=connection.getInputStream();  
  44.             BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("copy.png"));  
  45.             while((c=is.read())!=-1){  
  46.                 out.write(c);  
  47.                 System.out.println((char)c);  
  48.             }  
  49.             out.flush();  
  50.             is.close();  
  51.               
  52.         } catch (MalformedURIException e) {  
  53.             // TODO: handle exception  
  54.             e.printStackTrace();  
  55.         }  
  56.     }  
  57. }  
  58. </span>  
  59. 原文链接:点击打开链接
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值