0

嗨,我正在研究 android 和 java。所以我的问题是,每当发生 401 时,我都无法获取响应标头,也无法获取状态码。我正在使用 http url 连接。我的代码如下所示:

String https_url = "http://abc.com";
      HttpsURLConnection con = null;
      int status;
      URL url;
      try {

         url = new URL(https_url);
         con = (HttpsURLConnection)url.openConnection();

         con.setDoInput(true);
         int responseCode = con.getResponseCode();   //throw IOException:Received authentication challenge is null
        if (responseCode == 200)
        {

        }
        else
        {

        }
      } catch (MalformedURLException e) {
         e.printStackTrace();
      } catch (IOException e) {
          Log.i("&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*", "inside exception");
          if (con != null) {
              Log.i("&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*", "inside not null");
          int responseCodeAfterException = con.getResponseCode();
          Log.i("&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*", "inside not null and response");
          Log.i("&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*", "inside not null and response"+responseCodeAfterException);
          // Handle according to new response code
      }
         e.printStackTrace();
      }

我没有从响应头中获得任何字段。我知道这是身份验证问题,我的服务器给出 401 作为响应,但我无法获得该响应代码。我做错什么了吗。如何处理这种异常。需要帮助 谢谢。

4

1 回答 1

0

看看这个问题:IOException: Received authentication challenge is null

似乎抛出异常是因为响应不包含WWW-Authenticate标头(请参阅规范)。我不能确定这是您的情况,但是您可以检查一下,如果是这种情况并且您可以控制服务器方,则可以尝试修复服务器代码以返回标头。

否则,您只能捕获 IOException 并将其报告给您的应用程序。

于 2013-09-28T11:43:39.617 回答