android 如何检测连接的wlan wifi需要portal认证

本文探讨了如何检测Android设备连接的WLAN WiFi是否需要Portal认证。通常,通过发起HTTP请求并检查返回的302重定向响应来判断。然而,示例代码中设置自定义RedirectHandler以禁止自动重定向,并尝试获取“location”头来找到重定向地址,但未成功。开发者寻求帮助以找出代码中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某些手机管家软件在手机连接上CMCC等wifi时,会弹出通知栏提示跳转到webview去进行portal验证。
他们是怎么检测的呢?有知道的麻烦通知下。万谢。

我在网上也搜了些资料,说对于这种wlan,android发起一个http请求,会返回一个302的重定向的报文,然后去获取“location”的重定向地址。但是不成功,下面是我的代码,请大牛帮忙看下到底是哪里出现的问题

    //禁止android自动执行重定向
public class RedirectHandler extends DefaultRedirectHandler {

@Override
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
return false;
}

}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
HttpPost httppost = new HttpPost(PortalActivity.TEST_URL);                
DefaultHttpClient  httpClient = new DefaultHttpClient();
try {
RedirectHandler redirectHandler=new RedirectHandler();
    //禁止android自动执行重定向
httpClient.setRedirectHandler(redirectHandler);
HttpResponse response=httpClient.execute(httppost); 
int state = response.getStatusLine().getStatusCode(); 
if(state == 302){
Header[] headers = response.getAllHeaders();
for(Header h : headers){
if("location".equalsIgnoreCase(h.getName())){
return h.getValue();
}
}
}
} catch (Exception e) {
return null



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值