`
小嘴冰凉
  • 浏览: 457203 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用HttpURLConnection获得重定向地址

    博客分类:
  • j2se
阅读更多

    今天跟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试试,这个程序实现的是一个很简单的网页阅读器呵!
1
分享到:
评论

相关推荐

    使用HttpURLConnection

    当我们使用`HttpURLConnection`时,有几个重要的知识点需要了解: 1. **连接与读取超时**: 描述中提到的“设置超时”至关重要。默认情况下,`HttpURLConnection`没有设置超时,如果网络出现问题,程序可能会...

    android使用HTTPURLconnection/get方法访问HTTP

    2. **打开连接**:然后,通过调用`openConnection()`方法,你可以得到一个`HttpURLConnection`实例: ```java HttpURLConnection connection = (HttpURLConnection) url.openConnection(); ``` 3. **设置请求...

    Java 获取网络302重定向URL的方法

    以下是使用`HttpURLConnection`获取302重定向URL的步骤: 1. 创建一个`URL`对象,指定要请求的URL。 2. 使用`openConnection()`方法打开与该URL的连接,并将其转换为`HttpURLConnection`对象。 3. 设置`...

    java HttpURLConnection 使用示例

    在本文中,我们将深入探讨`HttpURLConnection`的使用,包括GET和POST请求的实现,以及如何处理可能出现的乱码问题。 一、`HttpURLConnection`概述 `HttpURLConnection`是`URLConnection`的子类,专门用于处理HTTP...

    【Java】java.net.HttpURLConnection的使用.doc

    要从指定的URL获取网页内容,首先需要创建一个`URL`对象,然后调用`openConnection()`方法得到`HttpURLConnection`实例。为了模拟浏览器(例如IE)的行为,可以设置`User-Agent`请求头。连接建立后,通过`...

    Android 中HttpURLConnection与HttpClient使用的简单实例

    但随着Android版本的更新,这些问题得到了解决,现在HttpURLConnection成为了首选。 在实际应用中,你可能还需要处理更多细节,例如添加请求头、处理超时、处理重定向、错误处理等。此外,对于现代Android应用,...

    Java通过HttpURLConnection与servlet通信

    首先,创建`URL`对象,然后通过`openConnection()`得到`HttpURLConnection`实例。接着,可以设置请求方法(GET或POST),添加请求头,写入请求体,最后调用`connect()`方法建立连接,并通过`getInputStream()`或`...

    TestHttpForHTML.rar

    HttpURLConnection支持HTTP/1.1协议,并且在Java 1.5之后得到了大幅增强,提供了更多的功能,如连接池、请求方法(GET、POST等)、设置请求头以及处理重定向。使用HttpURLConnection,你可以通过设置Socket超时来...

    qq登录java版本

    在Java环境中,我们可以使用HTTP请求库,如HttpURLConnection或Apache HttpClient,来发送请求并处理响应,实现与QQ登录接口的交互。 1. **OAuth2.0授权机制**: QQ登录基于OAuth2.0授权协议,它允许第三方应用在...

    android之http协议编程)第三集hjava_http_post.zip

    一种常见的方式是使用HttpURLConnection类,它是Java标准库的一部分,适用于Android。以下是一个简单的使用HttpURLConnection进行POST请求的例子: 1. 首先,设置请求URL和请求参数。例如: ```java String url = ...

    java 网络及通信

    下面是一个使用`HttpURLConnection`发送GET请求的例子: ```java try { // 定义地址 URL url = new URL("http://www.example.com"); // 打开连接 HttpURLConnection http = (HttpURLConnection) url.open...

    Java版|腾讯微博|OAuth2.0授权|官方方法|可发文本和图片|示例代码

    2. **重定向用户授权**:用户访问应用时,应用会引导用户跳转到腾讯微博的授权页面,用户同意后,会被重定向回应用设定的回调地址,并附带一个授权码(Authorization Code)。 3. **获取Access Token**:应用使用...

    Java实现HTTP文件下载

    在实际应用中,我们通常会使用Apache HttpClient库或OkHttp这样的第三方库来简化这个过程,它们提供了更高级的功能,如自动处理重定向、连接池、超时设置等。 例如,使用Apache HttpClient的代码片段可能如下: ``...

    HttpClient.jar

    尽管在Android平台上,HttpClient自API级别23(Android 6.0)开始被视为废弃,并推荐使用OkHttp或者HttpURLConnection作为替代,但在许多旧项目或者特定需求场景下,HttpClient仍然被广泛使用。 HttpClient的主要...

    http请求 网络请求 从网路读数据

    在这个例子中,我们首先创建一个URL对象,然后通过`openConnection()`方法得到一个`HttpURLConnection`实例。设置请求方法为GET后,我们可以获取响应码,以确保请求成功。然后通过输入流读取服务器返回的数据,最后...

    Android做网站客户端

    1. **创建HTTP请求**:在Android中,我们通常通过`URL`对象打开一个连接,然后使用`openConnection()`方法得到`HttpURLConnection`实例。设置请求方法(GET或POST),添加请求头,并启用输入流以接收响应。 2. **...

    java 模拟登录(含验证码)

    1. **构建HTTP请求**:使用像`HttpURLConnection`或者第三方库如`Apache HttpClient`或`OkHttp`,创建一个指向登录页面的POST请求。你需要设置请求头,比如`Content-Type`通常设为`application/x-...

    JAVA 模拟网页是登录

    这通常涉及到创建`HttpURLConnection`或使用第三方库如Apache HttpClient或OkHttp。在请求头中设置"Content-Type"为"application/x-www-form-urlencoded",并将用户名和密码作为键值对添加到请求体。 4. **处理...

    基于java的豆瓣OAuth认证示例项目.zip

    在Java中,我们可以使用诸如`HttpURLConnection`、`OkHttp`或`Apache HttpClient`等库来处理HTTP请求,同时,可以利用`OAuthSignpost`、`Spring Security OAuth`或`OAuth2 Java Client`等库来简化OAuth认证流程。...

Global site tag (gtag.js) - Google Analytics