阿蜜果
不骄,不矜,勤工,好学,才是好女子
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 194, comments - 868, trackbacks - 0
HttpURLConnection使用中遇到的一个问题
今天跟TiGERTiAN谈到HttpURLConnection使用中的一个问题,就是当连接到的那个地址重定向到另一个地址时,怎么样获得那个重定向后的地址,弄了一下,找出了方法,结果起先我们两个都没想到,嘿嘿,在此记录一下。
HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。
下面来看一个例子:
import
java.net.HttpURLConnection;
import
java.net.URL;
import
java.io.BufferedReader;
import
java.io.InputStreamReader;
/** */
/**
* 网页阅读器.
*
@author
<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
* Creation date: 2007-10-9 - 上午11:47:26
*/
public
class
PageReader
{
//
连接对象
private
static
HttpURLConnection conn;
/** */
/**
* 根据url连接某地址,并返回返回码.
* 返回码说明:
* 0~200为正常情况,其中200为OK
* 其余都为错误的情况,具体请参见w3
*
@param
urlStr 需连接的url字符串
*/
private
int
connect(String urlStr)
throws
Exception
{
URL url
=
new
URL(urlStr);
conn
=
(HttpURLConnection) url.openConnection();
System.out.println(
"
返回码:
"
+
conn.getResponseCode());
//
如果定向的地址经过重定向,
//
那么conn.getURL().toString()显示的是重定向后的地址
System.out.println(conn.getURL().toString());
return
conn.getResponseCode();
}
/** */
/**
* 读取网页的内容.
*
@return
返回网页的内容
*/
private
String readContents()
throws
Exception
{
BufferedReader in
=
null
;
StringBuffer sb
=
new
StringBuffer();
in
=
new
BufferedReader(
new
InputStreamReader(conn
.getInputStream()));
String inputLine;
while
((inputLine
=
in.readLine())
!=
null
)
{
sb.append(inputLine);
sb.append(
"
\n
"
);
}
return
sb.toString();
}
/** */
/**
* 中断连接.
*/
private
void
disconnect()
{
conn.disconnect();
}
/** */
/**
* 测试方法
*
@param
args
*
@throws
Exception
*/
public
static
void
main(String[] args)
throws
Exception
{
PageReader reader
=
new
PageReader();
String url
=
"
http://hexapixel.com/download.php?file=com.hexapixel.widgets.ribbon.alphatest.src.jar
"
;
reader.connect(url);
String content
=
reader.readContents();
System.out.println(
"
网页内容:
"
+
content);
reader.disconnect();
}
}
呵呵,http://hexapixel.com/download.php?file=com.hexapixel.widgets.ribbon.alphatest.src.jar
这个地址会进行重定向,定向为:
http://hexapixel.com/files/com.hexapixel.widgets.ribbon.alphatest.src.jar
TiGERTiAN想要获得的就是后面那个地址,运行该程序后,大家可以看到,System.out.println(conn.getURL().toString());打出的就是这个地址,可惜TiGERTiAN和我开始都没想到,看来是要多试试的。大家可以将那个url地址改成
http://www.blogjava.net/amigoxie
试试,这个程序实现的是一个很简单的网页阅读器呵!
posted on 2007-10-09 12:36
阿蜜果
阅读(1371)
评论(9)
编辑
收藏
所属分类:
Java
FeedBack:
#
re: HttpURLConnection使用中遇到的一个问题
2007-10-09 13:03 |
千里冰封
呵呵,搞起这个来了,有意思
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题
2007-10-09 13:07 |
阿蜜果
@千里冰封
是有个朋友用这个时发现的一个问题
:)
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题
2007-10-09 13:17 |
dennis
HttpURLConnection默认是允许重定向,你可以关闭
conn.setFollowRedirects(false);
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题
2007-10-09 18:25 |
TiGERTiAN
嘿嘿。。。多亏Amigo姐姐。。不然要烦死我了。。。
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题
2007-10-10 16:28 |
阿蜜果
@ dennis
谢谢指点
@ TiGERTiAN
同学习嘛
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题[未登录]
2007-10-10 23:10 |
xmlspy
直接使用commons-httpclient-3.1就可以了,比这个方便多了
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题
2007-10-11 08:48 |
阿蜜果
@xmlspy
恩,commons-httpclient-3.1包还不错,不过我那个朋友没有用那个包。它直接用HttpURLConnection时出现的这个问题
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题[未登录]
2007-10-17 20:41 |
yoyo
code review:
1)conn.getResponseCode(); 重构为: int resultCode = conn.getResponseCode();
2) StringBuffer sb = new StringBuffer(); 重构为:
StringBuffer sb = new StringBuffer(conn
.getInputStream().length);
回复
更多评论
#
re: HttpURLConnection使用中遇到的一个问题[未登录]
2007-10-18 08:35 |
阿蜜果
@yoyo
thank you very much
:)
回复
更多评论
新闻频道
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
相关文章:
【转】配置ehcache.xml文件
《重构》学习笔记(一)——代码的坏味道
用Java获得当前性能信息
【转】高效的Java异常处理
HTMLParser的使用
【转载】JAVA客户端连接SSL
NetBeans6.0正式版发布
异常备忘:java.lang.UnsupportedClassVersionError: Bad version number in .class file
利用Java的反射与代理机制实现AOP
利用Java的反射与代理机制实现IOC
<
2007年10月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
錢為人用無需多,人為錢忙凈白忙
留言簿
(133)
给我留言
查看公开留言
查看私人留言
随笔分类
Ajax(2)
Ant(1)
Auto Code(4)
Cewolf
CMMI(1)
CSS(2)
CVS(1)
Design Pattern(8)
Eclipse BIRT
EJB
extremecomponents(1)
GIS(2)
Hibernate(8)
iBATIS(2)
IDE(1)
Inno Setup(2)
Java(23)
Javascript(25)
JBoss(1)
JFreeChart(2)
JFreeReport(2)
JSF
MySql(10)
Open Source(4)
Oracle(4)
Other(9)
Spring(12)
Sql Server(1)
Struts(7)
Struts2(8)
Tomcat
UML
Web(1)
Web Service(2)
Workflow
似水流年(35)
网络通信相关(6)
项目管理(4)
随笔档案
2008年6月 (2)
2008年5月 (3)
2008年4月 (2)
2008年2月 (2)
2008年1月 (12)
2007年12月 (10)
2007年11月 (13)
2007年10月 (11)
2007年9月 (13)
2007年8月 (26)
2007年7月 (12)
2007年6月 (3)
2007年5月 (4)
2007年4月 (23)
2007年3月 (32)
2007年2月 (26)
文章分类
喜爱歌词(12)
生活点滴(3)
芝麻粒知识(8)
英语(1)
相册
java学习相关
other
好友照片
日历
流逝的青春
设计模式相关
走走拍拍
关注blog
atomic_age
BeanSoft
echoheart2008
JAVA-HE
kenzhang
坏男孩
干儿子——子源
施伟
蚂蚁
鼠标
积分与排名
积分 - 215156
排名 - 28
最新评论
1. eXtremeComponents download[未登录]
评论内容较长,点击标题查看
--gavin
2. re: 使用XFire+Spring构建Web Service(一)——helloWorld篇
为什么我删了那个spring1.x的包就不行呢,说org/codehaus/xfire/spring/xfire.xml不存在。。。还要做什么改动吗?
--lifeng
3. re: 依靠
俺也喜欢!
--sunnyboy
4. re: java.util.ConcurrentModificationException
好
--fykenny
5. re: java.util.ConcurrentModificationException
我怎么总是登陆不了,,
用户名fykenny是正确的啊
有时候又行的
--fykenny
评论排行榜
1. 使用XFire+Spring构建Web Service(二)(51)
2. 通用权限管理系统设计篇(三)——概要设计说明书(44)
3. 使用XFire+Spring构建Web Service(一)——helloWorld篇(33)
4. 通用权限管理设计篇(二)——数据库设计(25)
5. 用JFreeChart增强JSP报表的用户体验(22)