我在写一个使用http请求获取数据的网络android应用程序。数据是HTML格式。我使用Apache HttpClient和JSoup。在java中处理HTTP请求重定向
当我与移动互联网提供商交通不畅时,我总是被重定向到提供商的页面,说我应该支付一些钱。当然,解析这个页面是一个坏主意。
如何检测发生的页面替换?
我在写一个使用http请求获取数据的网络android应用程序。数据是HTML格式。我使用Apache HttpClient和JSoup。在java中处理HTTP请求重定向
当我与移动互联网提供商交通不畅时,我总是被重定向到提供商的页面,说我应该支付一些钱。当然,解析这个页面是一个坏主意。
如何检测发生的页面替换?
此代码将帮助您了解您的请求的最终目标,如果不是您要求的页面,则为提供商页面。
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);
感谢
谢谢!这真的有用! – user1256821
如果您的提供商是骗你通过立即返回一个200 OK
但不给你,你所请求的资源,最好的选择可能是设置一个自定义HTTP响应头,你的客户可以在继续之前检查。
你是否得到了正确的300状态码,或者提供者是否返回“不正确”的数据? – chrylis
我得到200(OK)作为状态码。 – user1256821