首页 > 解决方案 > 当我使用 jsoup 库请求 URL 时发生错误的响应代码

问题描述

我正在开发一个 WI-Fi 应用程序来连接热点网络。连接时,我想根据网络状态获取响应代码。假设,如果我的 SSID 名称类似于“MyHotspot”,我将其连接到我的手机中并检查它处于“需要身份验证/登录”状态的状态。在该状态下,我正在尝试使用 jsoup 解析器请求 URL。然后我得到了响应代码 302。这是正确的响应代码,但如果我的 SSID 处于“已连接”状态。那个时候它也显示响应代码302。这是错误的。

我想接收基于 SSID 状态的响应代码。如果 SSID 处于身份验证状态,响应将出现 302。如果 SSID 处于连接状态,响应将出现 200。这就是我想要的。

源代码 :

try{
    URL url = new URL("http://microsenseindia.com");
    Connection.Response response = Jsoup.connect(String.valueOf(url)).timeout(10000).followRedirects(false).execute();
    //Connection.Response response = Jsoup.connect("http://microsenseindia.com").timeout(10000).execute();
    Log.d(TAG, "check_if_internet_available : " + response.statusCode());
} catch(Exception e) {
    Log.e(TAG, "Jsoup_Exception: "+e);
}

标签: javaandroidjsoup

解决方案


首先代码 http 302

6.4.3. 302 找到

302(已找到)状态码表示目标资源暂时驻留在不同的 URI 下。由于有时可能会更改重定向,因此客户端应该继续使用有效的请求 URI 来处理未来的请求。

对于您的问题,也许此代码可以在不使用 URL 定义的情况下为您提供帮助:

    try{
        JsoupConnection.Response response = Jsoup.connect("http://microsenseindia.com")
                      .userAgent("Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like 
                                      Gecko) Chrome/19.0.1084.46 Safari/536.5")
                      .timeout(100000)
                      .ignoreHttpErrors(true) 
                      .execute();
        Log.d(TAG, "check_if_internet_available : " + response.statusCode());
        }catch(Exception e){
                Log.e(TAG, "Jsoup_Exception: "+e);
}

推荐阅读