2011-09-24 108 views
1

我學會知道從URL中實際鏈接重定向的位置。 經過testinf重定向URL網站,它給了url重定向類型301. 所以,我測試基於下面的鏈接來獲得真正的鏈接。 Get hold of redirect url with Java org.apache.http.client用Java重定向URL類型301

代碼看起來象下面這樣:

HttpGet httpget = new HttpGet(filename); 
HttpContext context = new BasicHttpContext(); 
DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpResponse response = httpClient.execute((HttpUriRequest) httpget, context); 
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) 
    throw new IOException(response.getStatusLine().toString()); 
HttpUriRequest currentReq = (HttpUriRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST); 
HttpHost currentHost = (HttpHost) context.getAttribute(ExecutionContext.HTTP_TARGET_HOST); 
String currentUrl = currentHost.toURI() + currentReq.getURI(); 
System.out.println(currentUrl); 

但我得到這樣的信息:

的方法執行(HttpUriRequest,HttpContext的)在類型AbstractHttpClient不>適用於參數( HttpGet,HttpContext)

會有人幫我,這個代碼有什麼錯?

回答

1

你的代碼,很適合我這種HttpClient的依賴性:

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.1.2</version> 
</dependency> 

,並用這些進口:

import org.apache.http.HttpHost; 
import org.apache.http.HttpResponse; 
import org.apache.http.HttpStatus; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpUriRequest; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.protocol.BasicHttpContext; 
import org.apache.http.protocol.ExecutionContext; 
import org.apache.http.protocol.HttpContext; 

檢查是否使用了正確的依賴關係。