【问题标题】:java.lang.IllegalStateException: Cannot access request header fields after connection is setjava.lang.IllegalStateException:设置连接后无法访问请求标头字段
【发布时间】:2019-11-21 02:19:47
【问题描述】:

我正在使用普通线程从服务器下载图像文件并获取IllegalStatementException

这是我从后台线程调用的方法

提示:我在Fragment 而不是Activity

【问题讨论】:

  • 你是在使用 Glide 库从服务器下载图片吗?
  • @R2R 显然不是。他正在做基本的HttpConnection
  • 您能否检查并说出异常发生在哪一行
  • 异常发生在第 115 行和第 180 行第一个是在 inputstream = connection.getInputerStream() 期间,第二个是在从后台线程调用下载图像方法期间

标签: java android illegalstateexception android-networking


【解决方案1】:

只需将方法getInputStream()放在方法getContentLength()之前即可:

inputStream = connection.getInputStream();
int fileSize = connection.getContentLength();

【讨论】:

    【解决方案2】:

    请添加代码:

    connection.getResponseCode();
    

    之前:

    connection.getInputStream();
    

    【讨论】:

      【解决方案3】:

      在获取 InputStream 之前,我们必须检查连接是否成功:

      if(connection.getResponseCode() == 200 /*Successful connection*/) { //To avoid ".IllegalStateException: Cannot access request header fields after c
        ...
        ...
        connection.getInputStream();
        ...
        ...
      
      }
      

      【讨论】:

        猜你喜欢
        • 2011-12-11
        • 1970-01-01
        • 2016-05-09
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多