apache 302重定向

来源:互联网 发布:excel数据分析方法五种 编辑:程序博客网 时间:2024/05/22 07:43
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;}

0 0
原创粉丝点击