Java网络编程实践和总结 --- URLConnection的学习
来源:互联网 发布:池州学院大数据学院 编辑:程序博客网 时间:2024/05/29 08:13
前面的blog主要讲解了Java基于TCP/UDP的Socket编程,这些实现都是基于TCP/IP协议上实现的,现在将学习用于和服务器(尤其是HTTP服务器)交互的Java网络接口:URLConnection类。
如果使用Socket接口直接和HTTP服务器交互,在信息传输过程中涉及到HTTP协议的信息头是不会被封装和处理的。Socket只会对TCP/IP协议的包头进行封包和解包。因此Java就提供了URLConnection类来处理这一类的连接,该类具有java的协议处理器机制,即:将处理协议的细节从处理特定的数据类型中分离出来,提供相应的用于接口,并进行其他完整的Web浏览器所完成的操作。
以下为使用URLConnection类的基本步骤:
1.构造一个URL对象
2.调用URL对象的openConnection()方法来获取一个与该URL对应的URLConnection对象
3.配置URLConnection的信息
4.读取首部的字段
5.获取输入流读取数据
6.获取输出流写入数据
7.关闭连接
以下为获取一个URLConnection的基本步骤:
<span style="white-space:pre"></span>try {URL u = new URL("http://www.baidu.com");URLConnection uc = u.openConnection();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
可以通过URLConnection的getInputStream()来获取网页的信息:
<span style="white-space:pre"></span>BufferedInputStream bis = null;try {URL u = new URL("http://www.baidu.com");URLConnection uc = u.openConnection();bis = new BufferedInputStream(uc.getInputStream());int len = -1;byte[] buf = new byte[2048];while ((len = bis.read(buf)) != -1) {System.out.print(new String(buf, 0, len));}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
getContentType():获取MIME内容类型,对应首部信息Content-type字段
getContentLength() :获取文件的长度,用于表示二进制文件的字节数,对应字段Content-length字段
getContentEncoding():获取内容编码,对应字段Content-encoding字段
getDate():获取文件何时发送的,对应Date字段
getExpiration():获取基于服务器的过期日期,说明何时从缓存中删除文档,对应Expires字段
getLastMoified():获取最后修改时间,对应Last-modified字段
另外,HTTP的其他首部信息可以通过getHeaderFied(String name)任意获取,有关HTTP协议详细信息请参考相关资料以及参考JDK API文档。
接下来我们将使用以上API打印一个HTTP首部信息:
<span style="white-space:pre"></span>try {URL u = new URL("http://www.baidu.com");URLConnection uc = u.openConnection();System.out.println("Content-type:" + uc.getContentType());System.out.println("Content-length:" + uc.getContentLength());System.out.println("Content-encoding:" + uc.getContentEncoding());System.out.println("Date:" + new Date(uc.getDate()));System.out.println("Expires:" + new Date(uc.getExpiration()));System.out.println("Last-modified:" + new Date(uc.getLastModified()));} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
运行结果:
Content-type:text/html; charset=utf-8
Content-length:-1
Content-encoding:null
Date:Thu Apr 02 22:56:30 CST 2015
Expires:Thu Apr 02 22:56:04 CST 2015
Last-modified:Thu Jan 01 08:00:00 CST 1970
通过getHeaderFied来遍历所有首部信息:
<span style="white-space:pre"></span>try {URL u = new URL("http://www.baidu.com");URLConnection uc = u.openConnection();for (int i = 1; ;i++) {String value = uc.getHeaderField(i);if (null == value) continue;System.out.println(uc.getHeaderFieldKey(i) + " : " + value);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}运行结果:
Date : Thu, 02 Apr 2015 15:05:40 GMT
Content-Type : text/html; charset=utf-8
Transfer-Encoding : chunked
Connection : Keep-Alive
Vary : Accept-Encoding
Set-Cookie : BAIDUID=480666D89E54D584C2D0A76917C89A24:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie : BIDUPSID=480666D89E54D584C2D0A76917C89A24; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie : BDSVRTM=0; path=/
Set-Cookie : BD_HOME=0; path=/
Set-Cookie : H_PS_PSSID=1449_12677_13075_10902_10211_12868_13322_12691_8502_13348_12722_12736_13227_13325_13203_13161_13257_8498_10633; path=/; domain=.baidu.com
P3P : CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control : private
Cxy_all : baidu+dcbbc7c45fc20aa09337768919da4ecf
Expires : Thu, 02 Apr 2015 15:04:50 GMT
X-Powered-By : HPHP
Server : BWS/1.1
BDPAGETYPE : 1
BDQID : 0x845db58200012859
BDUSERID : 0
- Java网络编程实践和总结 --- URLConnection的学习
- Java网络编程总结 --URLConnection
- 【Java网络编程】HttpClient、URLConnection的再次总结
- Java 网络编程1--url 和urlconnection
- java网络编程:URLConnection 和HttpURLConnection
- java网络编程-HTTP和URLConnection
- Java网络编程URL&URLConnection
- java网络编程工具-URLConnection
- URLConnection(Java网络编程)
- Java学习总结12——网络2(URLConnection详解)
- java网络编程URLConnection和HttpClient(下载图片范例)
- Java网络编程实践和总结 --- 基于UDP的Socket编程
- Java开发实践 网络编程 学习、应用、总结
- java网络编程:URLConnection发送HTTP请求的方法
- java网络编程学习详解和总结!
- Java网络编程URL与URLConnection
- Java网络编程(URL与URLConnection)
- 读书笔记-java网络编程-7URLConnection-缓存
- 利用Java API生成50到100之间的随机数
- CCF推荐国际会议和期刊
- 8. PHP 布尔类型
- J2EE学习笔记 整理
- IOS5之后添加的 UIViewController的属性和方法
- Java网络编程实践和总结 --- URLConnection的学习
- R语言基础编程技巧汇编 - 12
- 完整java开发中JDBC连接数据库代码和步骤
- pthread_create函数编译时报错:undefined reference to 'pthread_create'
- JAVA --- 23 kinds of design patterns
- Memcache 文件系统MemcacheFS
- PHY常见问题说明
- 20 Best Code Review Tools for Developers
- Android学习之路——Activity(2)