相关疑难解决方法(0)

如何检查无限制的Internet访问?(强制门户检测)

我需要可靠地检测设备是否具有完全的互联网访问权限,即用户不仅限于强制网络门户(也称为围墙花园),即有限的子网强制用户在表单上提交凭据以便获得满访问.

我的应用程序正在自动执行身份验证过程,因此在开始登录活动之前知道完全互联网访问不可用非常重要.

问题在于如何检查网络接口是否已启动且处于连接状态.它是关于确保设备具有不受限制的互联网访问,而不是沙盒内部网段.

到目前为止我尝试过的所有方法都失败了,因为连接到任何知名主机都不会抛出异常但返回有效的HTTP 200响应代码,因为所有请求都被路由到登录页面.

以下是我尝试的所有方法,但它们都返回true而不是false出于上述原因:

1:

InetAddress.getByName(host).isReachable(TIMEOUT_IN_MILLISECONDS);
isConnected = true; <exception not thrown>
Run Code Online (Sandbox Code Playgroud)

2:

Socket socket = new Socket();
SocketAddress sockaddr = new InetSocketAddress(InetAddress.getByName(host), 80);
socket.connect(sockaddr, pingTimeout);
isConnected = socket.isConnected();
Run Code Online (Sandbox Code Playgroud)

3:

URL url = new URL(hostUrl));
URLConnection urlConn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) urlConn;
httpConn.setAllowUserInteraction(false);
httpConn.setRequestMethod("GET");
httpConn.connect();
responseCode = httpConn.getResponseCode();
isConnected = responseCode == HttpURLConnection.HTTP_OK;
Run Code Online (Sandbox Code Playgroud)

那么,我如何确保连接到实际主机而不是登录重定向页面?显然,我可以从我使用的'ping'主机检查实际的响应体,但它看起来不是一个合适的解决方案.

authentication redirect android http connectivity

35
推荐指数
2
解决办法
2万
查看次数

标签 统计

android ×1

authentication ×1

connectivity ×1

http ×1

redirect ×1