1. 程式人生 > >apache 302重定向

apache 302重定向

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;
}