求助,使用.getResponseCode()方法抛出异常

不积小流不成海 2013-04-09 09:15:10
读取网络图片,但是每次都是在执行.getResponseCode()方法的时候抛出异常,快要崩溃了,到底是怎么回事,代码如下:
package com.qxj.lixinxing.service;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import com.qxj.lixinxing.utils.StreamTool;

import android.net.Uri;
import android.util.Log;

public class ImageService {

public static byte[] getImage(String path) throws Exception {

URL url = new URL(path); //得到资源地址
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //得到连接
connection.disconnect();
connection.setConnectTimeout(5000); //如果5000毫秒内未连接到就超时
connection.setRequestMethod("GET"); //以“get”方式发出请求
//每次执行到下面判断语句的时候就会抛出异常,是怎么回事?
if(connection.getResponseCode() == 200) { //如果数据存在,执行下一步
InputStream inStream = connection.getInputStream(); //得到网络返回的输入流
return StreamTool.read(inStream); //将输入流转换为二进制数据
}
return null;
}

}
...全文
2610 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wulikai-t9k 2015-05-07
  • 打赏
  • 举报
回复
引用 8 楼 xinxing260 的回复:
找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。 如果一定要这样操作的话,需要在MainActivity中加入如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 并且在配置文件中将SDK的最低等级设为11
感谢LZ自问自答,无私的分享精神!
z_songlin 2014-08-09
  • 打赏
  • 举报
回复
引用 16 楼 laomengzi 的回复:
[quote=引用 8 楼 xinxing260 的回复:] 找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。 如果一定要这样操作的话,需要在MainActivity中加入如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 并且在配置文件中将SDK的最低等级设为11
这个放在MainActivity的什么地方啊[/quote]onCreate方法中
laomengzi 2014-08-05
  • 打赏
  • 举报
回复
引用 8 楼 xinxing260 的回复:
找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。 如果一定要这样操作的话,需要在MainActivity中加入如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 并且在配置文件中将SDK的最低等级设为11
这个放在MainActivity的什么地方啊
yyddhh123 2014-06-27
  • 打赏
  • 举报
回复
引用 8 楼 xinxing260 的回复:
找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。 如果一定要这样操作的话,需要在MainActivity中加入如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 并且在配置文件中将SDK的最低等级设为11
正解啊
ymangu 2014-05-19
  • 打赏
  • 举报
回复
引用 8 楼 xinxing260 的回复:
找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。 如果一定要这样操作的话,需要在MainActivity中加入如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 并且在配置文件中将SDK的最低等级设为11
这个是正解,真的成功了
malson 2014-04-22
  • 打赏
  • 举报
回复
不对,还是得用8l的方法
malson 2014-04-22
  • 打赏
  • 举报
回复
11楼终结此贴
luchenyu92 2014-04-08
  • 打赏
  • 举报
回复
<uses-permission android:name="android.permission.INTERNET"/>
q513394217 2014-02-22
  • 打赏
  • 举报
回复
有用,我也遇到同样的问题
longer262110 2013-04-12
  • 打赏
  • 举报
回复
引用 8 楼 xinxing260 的回复:
找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将……
这里没有错吗?connection.disconnect();
  • 打赏
  • 举报
回复
找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。 如果一定要这样操作的话,需要在MainActivity中加入如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 并且在配置文件中将SDK的最低等级设为11
一字先生 2013-04-10
  • 打赏
  • 举报
回复
引用 6 楼 longer262110 的回复:
connection.disconnect(); 你这是要干嘛,断开连接?
是的额,为什么要断开呢
longer262110 2013-04-10
  • 打赏
  • 举报
回复
connection.disconnect(); 你这是要干嘛,断开连接?
haoyizsw 2013-04-10
  • 打赏
  • 举报
回复
很明显了 把网络操作放在线程中操作,这个错误很明显的告诉你 你把网络操作放在了主线程 这是不允许的!你需要另起线程进行网络操作 new thread(){ public void run(){ 写上你的那些代码试试! } }.start()
  • 打赏
  • 举报
回复
networkonmainthreadexception
wlcw16 2013-04-09
  • 打赏
  • 举报
回复
把异常也发出来啊
  • 打赏
  • 举报
回复
有没有人帮忙看看是怎么回事
  • 打赏
  • 举报
回复
把判断语句注释掉,直接得到输入流也会抛出异常,我在配置文件里面添加访问网络权限了的啊

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧