2011-09-24 107 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; 

检查是否使用了正确的依赖关系。