2013-08-20 75 views
0

我在写一个使用http请求获取数据的网络android应用程序。数据是HTML格式。我使用Apache HttpClient和JSoup。在java中处理HTTP请求重定向

当我与移动互联网提供商交通不畅时,我总是被重定向到提供商的页面,说我应该支付一些钱。当然,解析这个页面是一个坏主意。

如何检测发生的页面替换?

+0

你是否得到了正确的300状态码,或者提供者是否返回“不正确”的数据? – chrylis

+0

我得到200(OK)作为状态码。 – user1256821

回答

1

此代码将帮助您了解您的请求的最终目标,如果不是您要求的页面,则为提供商页面。

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpContext localContext = new BasicHttpContext(); 
HttpGet httpget = new HttpGet("http://www.google.com/"); 
HttpResponse response = httpclient.execute(httpget, localContext); 
HttpHost target = (HttpHost) localContext.getAttribute(
ExecutionContext.HTTP_TARGET_HOST);// this is the final page of the request 
System.out.println("Final target: " + target); 
HttpEntity entity = response.getEntity(); 
EntityUtils.consume(entity); 

感谢

+0

谢谢!这真的有用! – user1256821

0

如果您的提供商是骗你通过立即返回一个200 OK但不给你,你所请求的资源,最好的选择可能是设置一个自定义HTTP响应头,你的客户可以在继续之前检查。