public static HttpResponse RedirectUrl(String url) {try {HttpParams httpParameters = new BasicHttpParams();
        // 设置连接管理器的超时
        ConnManagerParams.setTimeout(httpParameters, 20000);
        // 设置连接超时
        HttpConnectionParams.setConnectionTimeout(httpParameters, 20000);
        // 设置socket超时
        HttpConnectionParams.setSoTimeout(httpParameters, 20000);
        //设置自定义重定向
        HttpClientParams.setRedirecting(httpParameters, false);

        HttpClient hc = getHttpClient(httpParameters);

        HttpGet httpGet = new HttpGet(url);
        httpGet.setParams(httpParameters);
        HttpResponse response = hc.execute(httpGet);

        return response;
    } catch (IOException e) {e.printStackTrace();

    }return null;
}



private static int retry = 0;
/**
 * 尝试获取referrer次数
 */
public static int retryNum = 3;

/**
 * 用重定向的方式去获取refer
 * 该方法用于判断最终的链接得出
 *
 * @param context
 * @param tackUrl
 * @param id
 * @return
 */
public static String getRedirectUrl(Context context, String tackUrl, String id) {Trace.e("getRedirectUrl", "retry==" + retry);
    try {HttpResponse response = PackHttp.RedirectUrl(tackUrl);
        if (response == null) {retry++;
            getRedirectUrl(context, tackUrl, id);
            return "";
        }int code = response.getStatusLine().getStatusCode();
        if (code != HttpStatus.SC_OK) {Header[] hander = response.getHeaders("Location");
            if (hander != null && hander.length > 0) {String redictUrl = hander[hander.length - 1].getValue();
                //结束重定向条件
                if (redictUrl.startsWith(String.valueOf(new char[]{'m', 'a', 'r', 'k', 'e', 't', ':',}))|| redictUrl.startsWith(Const.URL_REDIR_URL)) {updateRef(context, id, redictUrl);
                    return "";
                }//多次判定重定向
                return getRedirectUrl(context, redictUrl, id);
            }} else if (code == HttpStatus.SC_OK) {String redictUrl = tackUrl;

            if (redictUrl.startsWith(String.valueOf(new char[]{'m', 'a', 'r', 'k', 'e', 't', ':',}))|| redictUrl.startsWith(Const.URL_REDIR_URL)) {updateRef(context, id, redictUrl);
            } else {//再次尝试获取
                retry++;
                getRedirectUrl(context, redictUrl, id);
            }}} catch (Exception e) {e.printStackTrace();
        retry++;
        getRedirectUrl(context, tackUrl, id);
    }return tackUrl;
}

apache 302重定向相关推荐

  1. Chrome在302重定向的时候对原请求产生2次请求的问题说明

    这个问题应该确确实实是一个Chrome的BUG,我在自己的编程环境中发现,并在多个服务器,多个编程语言的运行环境,以及多个浏览器下都测试过,都看到有2次请求出现.为了证明不是自己环境的问题,我也特意去 ...

  2. 301永久重定向实现方式及302重定向(侧重.htaccess)

    在我们的网站建设中,时常会遇到需要网页重定向的情况:象网站调整,如改变网页目录结构,网页被移到一个新地址,再或者,网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果 ...

  3. Shiro logout 302重定向,shiro 302解决方案

    ================================ ©Copyright 蕃薯耀 2022-04-09 蕃薯耀的博客_CSDN博客 一.问题描述 当登录退出为Ajax请求时,使用Shir ...

  4. Apache URL重定向指南

    Apache URL重定向指南 2004-01-28 21:01:11 Engelschall 阅读 <script src="http://www.meetchinese.com/e ...

  5. 301和302重定向的区别,301和302重定向怎么实现

    重定向很简单.如果你要将内容永久移动到新位置,请使用 301 重定向.如果你只是暂时移动它,请使用 302 重定向. 但你可能会想,这很重要吗?毕竟,用户无法察觉 301 和 302 的区别,两者在功 ...

  6. nginx中301和302重定向之间的区别

    首先客户端浏览器的URL都会改变: 302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址.因为服务器返回302,所以搜索引擎会认为新的网址是暂时的: 301重定向是永久的重定向,搜索引擎会 ...

  7. uni-app——一种通过Nginx反向代理处理302重定向请求解决网络请求中无法获取Cookie的解决方案

    问题描述 小程序中不会自动保存和发送Cookie 使用插件(https://uniapp.dcloud.io/api/request/request)方法不能解决302重定向情况下获取Cookie 小 ...

  8. scrapy 解决Redirecting 301 302重定向问题

    在使用Scrapy框架中URl被重定向,总是遇到这类问题: DEBUG: Redirecting (301/302) to <GET https://XXXX refer https://XXX ...

  9. HTTP 302重定向的一个具体例子

    网址:https://www.sslshopper.com/certificate-decoder.html 我们从IE浏览器里导出Certificate成.cer文件后, 用记事本打开,内容是这样的 ...

最新文章

  1. 能详细地讲讲stm32该怎么学吗?
  2. Attention!注意力机制模型最新综述(附下载)
  3. 第十一集VLAN原理和VTP协议理论讲解
  4. PTA数组作业一查找整数
  5. 集合的交集和函数的例题
  6. ESP8266在线视频网址
  7. php采集分页数据,如何通过php+wordpress实现分页获取数据
  8. debugging Auto Layout:Logical Errors
  9. Git自由之章 - 本地仓库的基本操作
  10. iphone android传照片大小,iPhone竟然可以传文件到安卓机?99%的人都不知道
  11. MySQL数据库入门:建库、建表、插入数据
  12. Scala下载和配置
  13. 解决Echarts官网无法访问的问题
  14. linux查看lammps版本,lammps linux
  15. HTCVIVE无线套装安装后unityvr项目无法在头盔中显示
  16. 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
  17. vot-toolkit-python测试DiMP50在VOT2018上的表现
  18. 《作业疯了》超奇葩游戏挑战你的脑细胞
  19. 【FPGA】初探FPGA —— 入门书籍推荐
  20. html监听多选框事件,复选框事件监听使用求助

热门文章

  1. jQuery Mobile优秀网站及资源汇总贴
  2. Java 的开发工具
  3. 卸载流氓软件云龙输入法和智能云输入法的方法
  4. mysql语句错误无法退出
  5. 滑动插件(TouchSlide)
  6. 补充卡巴使用中问题的解决方案
  7. vue+elementui+lodop打印表格
  8. php日文文件名 liunx,linux中文文件名不能访问,求教,在线等。
  9. CVPR 2021 旷世团队提出YOLOF
  10. java ac自动机_ac自动机java版