android程序连接网络错误:java.net.unknownhostexception:unable to resolve host

本文主要是介绍android程序连接网络错误:java.net.unknownhostexception:unable to resolve host,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从网上拿了一个android的天气预报程序来学习,最后run的时候发现提示下面的错误:

按我的调试过程分2步,都是有关网络访问方面的问题。

第一个错误:

android.os.NetworkOnMainThreadException

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

原因:是涉及到url操作的时候,访问网络不能在主程序中运行

解决:参考【http://geeksun.iteye.com/blog/1447708、http://kb.cnblogs.com/a/2311659/】

在Activity类的onCreate方法中添加下面的代码,线程的方法还没测试。

[html]  view plain copy
  1. public void onCreate(Bundle savedInstanceState) {  
  2.     super.onCreate(savedInstanceState);  
  3.     setContentView(R.layout.main);  
  4.       
  5.     StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads()  
  6.             .detectDiskWrites().detectNetwork().penaltyLog().build());  
  7.     StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects()  
  8.             .detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());  
  9. }  

Android的官方文档给出了这个类设置的目的:
StrictMode是一个系统提供的开发工具,用以检测在开发过程中因为偶然的事故从而造成的系统潜在的问题,进而提示开发者对其进行修复。

StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。

显然,大多数初学者在进行网络开发时,会选择将访问网络的代码直接放到主进程中,由于和主进程的首要工作——UI交互——相矛盾,因此,必须设置一定的检测机制,以保证系统运行的流畅,所有的异常都可以被检测。

public static voidsetThreadPolicy(StrictMode.ThreadPolicy policy)
这个方法允许我们为当前应用设置一组线程运行策略机制。其中的参数是一个策略组(即一组策略)。
public static finalclass StrictMode.ThreadPolicy.Builder()
Builder是StrictMode中内嵌类ThreadPolicy的一个内嵌类,在此我们调用了它的默认构造方法。
detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()

通过这种方式,我们设置了一组监控模式,我们要检测磁盘的读写,网络的访问, Log中的违规等。

第二条语句设置了虚拟机的一组监控策略,参数一致,因此不再赘述。
这样,在保证了网络和磁盘访问受控之后,主线程就允许我们对网络资源进行访问。

【参考http://www.2cto.com/kf/201205/129843.html】

 

 

 第二个错误:

java.lang.nullpointerexception

第一种情况:android4.0中

java.net.unknownhostexception:unable to resolve host "www.google.com":no addree associated with hostname

debug跟踪是在执行url操作url.openStream()时抛出IOException异常。

 第二种情况:android2.2中

java.net.SocketException: Permission denied

........

debug跟踪是在执行url操作url.getInputStream()时抛出IOException异常。

 

从网上搜索了一下,发现有两个方法:

1、添加dns,参考【http://interzb.iteye.com/blog/1240835】,经测试无效,不是这个原因

Run Configurations...或者Debug Configurations...打开下面的窗口,在对应项目的Target栏目最后行设置dns

 

2、Manifest文件没有标明网络访问权限,测试正常,解决问题

如果确认网络已经正常连接,还出现这个问题,那么看一下Manifest文件是否标明了应用的网络访问权限;如果没有标明,就访问不了网络,就会有这个错误。

在AndroidManifest.xml文件中添加下面的语句:

//<uses-sdk android:minSdkVersion="15" />//在这行后面

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

 参考【http://blog.csdn.net/murongshusheng/article/details/7623188】

这篇关于android程序连接网络错误:java.net.unknownhostexception:unable to resolve host的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/398874

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav