java中HTTP请求重定向的处理

java中HTTP请求重定向的处理,java,android,apache-httpclient-4.x,Java,Android,Apache Httpclient 4.x,我正在编写一个网络android应用程序,它使用http请求获取数据。数据是HTML格式的。我使用apachehttpclient和JSoup 当我与我的移动互联网提供商的通信中断时,我总是被重定向到提供商的页面,说我应该支付一些钱。当然,解析这个页面是个坏主意 如何检测发生的页面替换?此代码将帮助您了解请求的最终目标是什么,如果不是您请求的页面,则是提供者页面 DefaultHttpClient httpclient = new DefaultHttpClient(); HttpContext

我正在编写一个网络android应用程序,它使用http请求获取数据。数据是HTML格式的。我使用apachehttpclient和JSoup

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


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

此代码将帮助您了解请求的最终目标是什么,如果不是您请求的页面,则是提供者页面

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

谢谢

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

您是否获得了正确的300状态码,或者提供商只是返回了“不正确”状态码数据?我得到200(正常)作为状态码。