1.3 Redict

1.3 Redict


    在获取网页的过程中,往往会发生跳转,为了有效的处理跳转,需要用getStatusCode()方法获取服务器的状态码并且加以判断,如果返回值是以3开头的,那么则发生了跳转,这时候要确定新的地址,常见的几个以3开头的状态码是HttpStatus.SC_MOVED_TEMPORARILYHttpStatus.SC_MOVED_PERMANENTLY) HttpStatus.SC_SEE_OTHER

SC_TEMPORARY_REDIRECT。可以通过读取HTTP头中的location属性来获取新的地址,进而完成页面的下载,因此我们有必要处理网页的重定向。 下面的代码片段演示如何处理页面的重定向  
 package book;

 

import java.io.IOException;

 

import org.apache.commons.httpclient.*;

import org.apache.commons.httpclient.methods.*;

 

/**

 * 最简单的HTTP客户端,用来演示通过GET方式访问某个页面

 * @author wangpeng

 */

public class SimpleClient {

public static void main(String[] args) throws IOException {

HttpClient client = new HttpClient();

// 使用GET方法

HttpMethod get = new GetMethod("http://search.tianya.cn/bbs?q=gh");

client.executeMethod(get);

// 打印服务器返回的状态

System.out.println(get.getStatusLine());

//处理重定向

 int statuscode = get.getStatusCode();    

        if ((statuscode == HttpStatus.SC_MOVED_TEMPORARILY) ||  

            (statuscode == HttpStatus.SC_MOVED_PERMANENTLY) ||    

            (statuscode == HttpStatus.SC_SEE_OTHER) ||    

            (statuscode == HttpStatus.SC_TEMPORARY_REDIRECT)

           )     

        {

         //读取新的URL地址    

         Header header = get.getResponseHeader("location");    

               if (header != null){    

               String newuri = header.getValue();    

               if ((newuri == null) || (newuri.equals("")))    

               newuri = "/";     

               GetMethod redirect = new GetMethod(newuri);    

               client.executeMethod(redirect);    

               System.out.println("Redirect:"+

               redirect.getStatusLine().toString());     

               

               } else{    

              

               System.out.println("Invalid redirect");    

               } 

        }

        // 打印返回的信息

        System.out.println(get.getResponseBodyAsString());

        // 释放连接

        get.releaseConnection();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值