401发生时获取响应头

时间:2013-09-28 11:20:40

标签: java android authentication httpurlconnection http-status-code-401

您好我正在研究android和java.So我的问题是,每当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响应,但我无法获得响应代码。我做错了什么。如何处理这种异常。需要帮助谢谢。

1 个答案:

答案 0 :(得分:0)

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

似乎引发了异常,因为响应不包含WWW-Authenticate标头(请参阅the spec)。我不能确定这是你的情况,但你可以检查它,也许,如果是这种情况并且你控制服务器方,可以尝试修复服务器代码以返回标题。

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