Android开发 getResponseCode() 抛出异常

本文针对getResponseCode()出现的异常提供了解决方案,包括检查网络访问权限、避免在主线程中执行网络操作及如何正确配置StrictMode来提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到getResponseCode() 抛出异常,先分析异常信息,然后注意检查以下几个方面:
1,是否设置了网络访问权限,如果没有设置过,在AndroidManifest.xml中加入下面的代码:

<uses-permission android:name="android.permission.INTERNET" />

2,更多的时候,可能不是上面这个问题,如果是networkonmainthreadexceptio的异常,有两个解决方法:
    (1)不要把网络操作放在了主线程,需要另起线程进行网络操作

new thread(){ public void run(){
            // your network code...
        } }.start()

    (2)在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 
StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之 间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。
如果一定要这样操作的话,需要在MainActivity的onCreate()中加入如下代码:

StrictMode.setThreadPolicy(new  StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());

并且在配置文件中将SDK的最低等级设为11。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值