android网络访问异常:android.os.NetworkOnMainThreadException

Caused by: android.os.NetworkOnMainThreadException

at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java)

at java.net.InetAddress.lookupHostByName(InetAddress.java:388)

at java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)

at java.net.InetAddress.getAllByName(InetAddress.java:214)

at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)

at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)

at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)

at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)

at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)

at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)

at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)

at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)

at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)

at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)

在2.3的手机上运行是没有问题的,在2.3后的手机上运行就会出现此异常。

在2.3之后的android不允许在主线程中访问网络,因为访问网络是耗时操作,如果在主线程中访问网络,在网络访问慢时,用户界面会假死,造成Android not Response,为了避免这个问题,2.3之后做了限制,必须将耗时操作放在子线程中完成!!!

时间: 2024-10-01 14:13:07

android网络访问异常:android.os.NetworkOnMainThreadException的相关文章

Android网络访问方法详解

大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作, HttpURLConnection和HttpClient.这两种方式都支持HTTPS协议.以流的形式进行上传和下载.配置超时时间.IPv6.以及连接池等功能. 一 : 首先来看一下Android下提供的网络访问相关API a) java.net.*(标准的Java接口):包括流和数据包(datagram)sockets.Internet 协议和常见 HTTP 处理.H

Android网络访问方法(二)---HttpURLConnection

“你是我的定格,我是你的过客.”------Android,我来了! 最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内.在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助.下面的代码简单描述了如何使用HttpURLConnecti

【Android】常见异常 —— android.view.WindowLeaked 分析以及解决办法

问题虽小,不过不知道还是比较麻烦的.异常信息: 10-22 10:19:38.651 12723-12723/cn.com.zte.uc E/WindowManager﹕ android.view.WindowLeaked: Activity cn.com.zte.uc.activites.shipTicket.OrderWrite1 has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{423fee70

android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问

谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线程里是不能对主线程的UI进行改变的, 因此就引出了Handler,主线程里定义Handler,子线程里使用. 消息机制的写法 [1] anr Application not response 应用无响应 主线程(UI线程) [2] 如果在主线程中进行了耗时的操作 (比如连接网络 拷贝大的数据) Th

Android连接网络异常:android.os.NetworkOnMainThreadException

package com.ccl.getimage; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android

安卓开发解决android.os.NetworkOnMainThreadException异常方法(主线程不能直接调用webservice)

安卓开发解决android.os.NetworkOnMainThreadException异常方法 2013-01-07 14:01:04|  分类: 技术 |  标签:安卓  技术  java  |举报|字号 订阅 在android 2.3上访问网络的方法,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,主要问题在于4.0中访问网络不能在主线程中进行,有两个方法可以解决.第一种是在主线程中增加如下代码[不推荐]: // 详见

android之android.os.NetworkOnMainThreadException异常

使用android测试访问web服务器的webservice时,在MainActivity的主线程中访问webservice,代码如下: package com.example.myandroidpro; import java.io.File; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationE

android.os.NetworkOnMainThreadException异常

最近好忙啊,准备完比赛的东西就准备驾考,终于可以稍微歇息下了,好久没写了.今天解决了一个对之前的我来说是一个很大的问题,好开心呀!! 之前项目开发是用2.3开发 测试手机是android4.4时候提示 android.os.NetworkOnMainThreadException异常 第一次看到这异常,字面意思是说:在主线程中的网络异常.然后我就去了解了下这个异常,先看看官方的说明: public class NetworkOnMainThreadException extends Runtim

安卓问题总结( android.os.NetworkOnMainThreadException异常)

问题描述: android.os.NetworkOnMainThreadException异常(不要在主线程访问网络资源) 问题分析: 造成这种异常的原因是安卓版本问题(仔细研究错误原因是代码不符合Android规范),网上搜索发现:android3.0版本开始(具体是不是从这个版本开始的,就不深究咯)就强制程序不能在主线程中访问网络,要把访问网络放在独立的线程中. 解决方式: 1.想要忽略这些强制策略问题的话,可以在onCreate()方法里面加上 StrictMode.setThreadPo