Android开发中,我们经常会使用HttpURLConnection类来发出网络请求,请求发出后,一般都会使用getResponseCode()来获取服务器返回的HTTP状态码,以便判断请求是否成功,诸如200、500、404之类的状态码使用getResponseCode()来获取是没有问题的,但是如果状态码是401,同时你使用的又是4.1.x/4.2.x/4.3.x的安卓系统的话,那么getResponseCode()可能会抛出IOException异常:

java.io.IOException: No authentication challenges found

之所以会出现这个问题,是因为服务器在返回401的时候,没有同时在header中设置“WWW-Authenticate”响应头,这个响应头的作用是告诉客户端,服务器需要哪种类型的认证(Basic或者Digest),通常这个响应头对客户端来说没什么作用,但是标准就是这么规定的。如果服务器没返回这个响应头,那么客户端在解析的时候就会找不到这个header而导致抛出异常。

解决这个问题的方法有两种:

1)从服务器入手,在返回信息的时候,服务器设置一个假的“WWW-Authenticate”响应头,比如:WWW-Authenticate: Basic realm="fake",或者遇到未授权的请求时,直接返回403,而不是返回401;

2)从客户端入手,修改代码,在获取响应码的时候捕捉异常:

HttpURLConnection connection = ...;

try {

connection.getResponseCode();

} catch (IOException e) {

int responsecode = connection.getResponseCode();

}

如果getResponseCode()抛出IOException,那么在捕获异常后,再次获取响应码,这时候就可以正常获取到了,so,就是这么简单。

android 请求服务器抛io异常,HttpURLConnection调用getResponseCode()时抛出IOException异常...相关推荐

  1. Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法...

    Visual Studio2012打开时弹出"遇到异常:这可能是由某个扩展导致的"错误的解决办法: 具体问题如下: 分析原因:网上搜集了以下,出现异常的原因是安装了第三方控件,然后 ...

  2. android 请求服务器抛io异常,Android开发中与服务器交互时,遇到java.io.IOException: Target host must not be null的问题...

    当我遇到这个问题的时候,也在网上查找好半天.找到了一个和这个问题很类似的问题--java.lang.IllegalStateException: Target host must not be nul ...

  3. Android 向服务器发送XML数据及调用webservice

    首先讲一下webservice概念 可以看作是网络上的API,不过不是是通过new XXX().api()调用: 调用方式:客户端发送一段xml到服务器,在xml中指定要调用的方法的名称,以及各项参数 ...

  4. html 访问web services,Web服务 – 尝试调用webservice时出现异常

    尝试从SOAPUI调用服务时,我收到以下异常.当我在浏览器中打开端点时,会显示wsdl的罚款. WARN org.apache.cxf.phase.PhaseInterceptorChain - In ...

  5. SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

    我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...

  6. ie 调用java的时候报错,调用javabean的非常郁闷的异常。

    当前位置:我的异常网» Java Web开发 » 调用javabean的非常郁闷的异常. 调用javabean的非常郁闷的异常. www.myexceptions.net  网友分享于:2013-09 ...

  7. C# 如何处理抛出的异常,或者已知的错误

    此文章是给多层开发的人使用的,小型代码,或者不理解多层开发的朋友,请绕道. 多层开发已经很普遍,最少有2层. 1:表现层(显示数据,图形处理,等等) 2:处理层(逻辑处理,具体执行操作) 或者可以分得 ...

  8. 异常(什么是异常、异常的体系结构、优雅的异常处理、异常信息的分析与程序调试、自定义异常)

    (一) 什么是异常(程序没有语法错误, 可能产生的运行时错误) 比如你使用java程序开发了一个计算器,可以让用户进行计算,但是在计算除法的过程中(程序运行过程中),用户把除数设为0, 这时我们的程序 ...

  9. java中字输入输出异常_Java:详解Java中的异常(Error与Exception)

    一. 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 程序错误分为三种:1 ...

  10. java后台调用SOE时,报异常java.io.IOException: Attempted read from closed stream

    java后台调用SOE时,报异常java.io.IOException: Attempted read from closed stream 代码诸如此类 public void test(HttpS ...

最新文章

  1. linux密码加密文件,Linux下加密/解密及用密码保护文件的七把利器
  2. 豆瓣评分 9.0,超 10 万开发者的入门选择,这本经典好书终于升级啦!
  3. BENDR for BCI : 多伦多大学研究者提出受BERT启发的深度神经网络学习​海量EEG 数据...
  4. android危险权限分组,Android 6.0权限请求相关及权限分组方法
  5. 被遗忘的图灵:计算机、神经网络、人工智能……他是这一切之父
  6. ZooKeeper 3.0.0发行说明
  7. 适合MySQL master/slave模式的JDBC driver: lbpool
  8. 日语+AI语音黑科技,早道开启小语种AI智能时代!
  9. Spring学习手札(二)面向切面编程AOP
  10. 五年高考三年模拟暗部软件库_小老弟,你的《五年高考三年模拟》掉高速上了……...
  11. Python-----列表,字典,集合生成式,生成器
  12. linux设置ipsan_linux挂载ipsan服务器
  13. Hive-之即席查询引擎选型考量
  14. 单片机一键开关机电路,多种方案可供选择,有纯硬件的也有软硬结合的
  15. sklearn中make_blobs模块使用
  16. 本机无法 正常连接到桌面端Ubuntu虚拟机
  17. java空指针异常【解决思路-方法】
  18. 【斯坦福大学公开课CS224W——图机器学习】三、节点和图嵌入
  19. 机器学习(一)机器学习概述
  20. 字符串操作——substr用法

热门文章

  1. 凸优化学习笔记(四):对偶性、KKT 条件、敏感性分析
  2. 微服务分布式基础项目(免费答疑):SpringBoot2.X+SpringCloud+SpringDataJPA+Consul+Feign+Swagger (还会持续更新,不懂的可以问博主)
  3. 坐标c语言输入数组中,求助 C语言中如何利用二维数组计算多个坐标之间的距离...
  4. php pdoconnection,php使用pdo连接报错Connection failed SQLSTATE的解决方法
  5. java与xml转换 -- XStreamAlias
  6. opencv 离线文档下载地址在哪里?
  7. 面象对象与面象过程内存分区
  8. iOS动画和第三方插件学习网址
  9. 异步 Action 的定义
  10. JAVA中Random分析