使用android真机测试http网络连接异常解决办法
2015-05-03 00:28
701 查看
最近在学校android网络编程之json解析时遇到不少问题,其中之一是在使用http协议连接网络时总是出错,捣鼓了将近两天,终于略有所悟,现记录如下。
一 、问题描述
首先我是在本地tomcat服务器上部署一个web项目,通过web项目的servlet完成对客户端连接请求的操作。其他都很顺利,在电脑浏览器上输入URL访问正常,在eclipse上创建Java项目也能正常访问。但是一旦放在android项目中,就出现错误了,抛出异常信息为:failed to connect to localhost/127.0.0.1 (port 80) after
90000ms: isConnected failed: ECONNREFUSED ,由于经验欠缺不能一下看出错误所在。我就笨笨的通过Log语句一句一句的测试,好在通过不断摸把错误定位到【int code = connection.getResponseCode();】这句话上,每当执行到该处时就会抛出异常。搜索了一下【为何使用getResponseCode()方法会抛出异常?】,基本上大部分答案都指向【android网络连接不能在主线程上进行,需要另启线程】这一知识点上。开了多线程以后,问题依旧。
二、解决办法
经过不断地摸索尝试,就在刚才终于测试成功了。原来问题出在我的URL上。我们在本地配置tomcat服务器时,有三种访问方式都可以通过浏览器连接到服务器上,下面我就以我本地服务器为例给出三种形式的URL:
1. http://127.0.0.1:8088/jsonProject/images/picture.png
2. http://localhost:8088/jsonProject/images/picture.png
3. http://192.168.0.100/jsonProject/images/picture.png(IP地址略有改动)
以上三种URL在联网时都可以通过浏览器访问到picture.png这张图片。仔细观察不难发现,不同之处在于红色字体的部分,第1和第2个URL是本地访问方式,也就是说前两种访问方式不需要通过网络。第三种URL需要联网才能正常访问,也就是说只要你的服务器开着,任何人都可以通过网络使用该URL访问到picture.png这一资源。使用真机测试时,你的真机也就相当于脱离于你的pc之外的另外一设备,所以说当你需要连接到服务器时只能使用第三种URL方式。即你需要使用你的真实IP地址。(真实ip地址查看方式:在命令行窗口输入:ipconfig即可查看你的IPv4地址)。
三、其他
由于知识面较为狭窄,服务器方面更是刚刚接触,所以有许多描述可能不是太为准确或者贴切。希望大家发现该篇文章有不妥的地方能够提出,我会虚心受教,共同学习。
-----2015年5月3日01:15:22
-----写于宿舍
一 、问题描述
首先我是在本地tomcat服务器上部署一个web项目,通过web项目的servlet完成对客户端连接请求的操作。其他都很顺利,在电脑浏览器上输入URL访问正常,在eclipse上创建Java项目也能正常访问。但是一旦放在android项目中,就出现错误了,抛出异常信息为:failed to connect to localhost/127.0.0.1 (port 80) after
90000ms: isConnected failed: ECONNREFUSED ,由于经验欠缺不能一下看出错误所在。我就笨笨的通过Log语句一句一句的测试,好在通过不断摸把错误定位到【int code = connection.getResponseCode();】这句话上,每当执行到该处时就会抛出异常。搜索了一下【为何使用getResponseCode()方法会抛出异常?】,基本上大部分答案都指向【android网络连接不能在主线程上进行,需要另启线程】这一知识点上。开了多线程以后,问题依旧。
二、解决办法
经过不断地摸索尝试,就在刚才终于测试成功了。原来问题出在我的URL上。我们在本地配置tomcat服务器时,有三种访问方式都可以通过浏览器连接到服务器上,下面我就以我本地服务器为例给出三种形式的URL:
1. http://127.0.0.1:8088/jsonProject/images/picture.png
2. http://localhost:8088/jsonProject/images/picture.png
3. http://192.168.0.100/jsonProject/images/picture.png(IP地址略有改动)
以上三种URL在联网时都可以通过浏览器访问到picture.png这张图片。仔细观察不难发现,不同之处在于红色字体的部分,第1和第2个URL是本地访问方式,也就是说前两种访问方式不需要通过网络。第三种URL需要联网才能正常访问,也就是说只要你的服务器开着,任何人都可以通过网络使用该URL访问到picture.png这一资源。使用真机测试时,你的真机也就相当于脱离于你的pc之外的另外一设备,所以说当你需要连接到服务器时只能使用第三种URL方式。即你需要使用你的真实IP地址。(真实ip地址查看方式:在命令行窗口输入:ipconfig即可查看你的IPv4地址)。
三、其他
由于知识面较为狭窄,服务器方面更是刚刚接触,所以有许多描述可能不是太为准确或者贴切。希望大家发现该篇文章有不妥的地方能够提出,我会虚心受教,共同学习。
-----2015年5月3日01:15:22
-----写于宿舍
相关文章推荐
- 安卓用http网络访问在模拟器上没问题到真机上测试挂掉解决办法!
- Android 使用android-async-http网络请求框架出现Header[]不识别错误的解决办法
- Android HttpURLConnection.connect找不到源 HttpURLConnection连接失败 HttpURLConnection.connect IO异常 解决办法
- 【已解决】使用android-async-http网络请求框架出现Header[]不识别错误的解决办法
- Android开发中adb启动失败adb连接异常的解决办法
- Android开发中adb启动失败adb连接异常的解决办法
- Android中使用HttpConnection发送中文到服务器端乱码解决办法
- android中HttpClient获取Session然后使用 WebView共享session的解决办法
- Android 模拟器测试远程服务器成功,但是到真机上测试一点反应没有的解决办法
- android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法 .
- 用真机测试的时候出现adb连接断开的解决办法
- Xcode 7.1 造成图片等网络连接失败的解决办法 http连接
- Android主线程不能访问网络异常解决办法
- iOS9与XCode7中不能使用http连接的解决办法
- Android开发中adb启动失败adb连接异常的解决办法
- Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法
- Android Studio SDK-23无法使用HttpStatus类暂时解决办法
- 【转】Android开发中adb启动失败adb连接异常的解决办法 offline
- Android开发中adb启动失败adb连接异常的解决办法
- Android 使用 SDK Manager 下载SDK速度慢,容易丢包和异常的解决办法