当前位置:编程学习 > wap >>

HttpResponse response = httpclient.execute(httppost)执行抛出异常?能帮忙看下吗?

能帮我看下这段代码,
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.abc.com/selectusr.php");
httppost.setEntity(new UrlEncodedFormEntity(nameP));
HttpResponse response = httpclient.execute(httppost); 执行到这里的时候就抛出异常了, 为什么?

--------------------编程问答-------------------- 。。。异常呢? --------------------编程问答-------------------- 这句出现异常一般有三种情况:
1、传输异常:出在本地网络连接
2、协议异常:身份验证未通过
3、超时:分为两种
   a、httpClient无法连接到服务器(连接超时)
   b、连接到服务器,服务器没有在规定时间内返回响应(套接字超时) --------------------编程问答-------------------- 这里有异常是很正常的事,例如,连接超时,服务端无响应,地址不可用等等,你现在要做的就是try/catch扑捉异常,然后做自己的处理。 --------------------编程问答-------------------- 可能忘了加网络权限 <uses-permission android:name="android.permission.INTERNET" /> --------------------编程问答-------------------- 也有可能是在UI线程进行网络操作导致异常 --------------------编程问答-------------------- 这段代码在4.0版本之前执行没问题,
4.0之后就要放到线程里去执行。 --------------------编程问答--------------------
引用 6 楼 a65172017 的回复:
这段代码在4.0版本之前执行没问题,
4.0之后就要放到线程里去执行。


我执行这代码:HttpResponse ht = hc.execute(new  HttpPost(url));有时会报错,IP是自动获取的,每天都不一样.
请问如何放到线程里执行? --------------------编程问答-------------------- LZ问题解决了吗,我也刚遇到这问题,分享一下 --------------------编程问答-------------------- HttpResponse response = httpclient.execute(httppost); 执行到这里的时候就抛出异常了, 为什么?
lz你的问题解决了没有啊,我也刚遇到了这样的问题,你为什么说4.0之后要放大线程里面去呢,能不能跟我分享你是怎么解决的896788056QQ这是我号 --------------------编程问答-------------------- UI与网络的数据交换,要放到线程里,防止UI线程因为数据加载造成阻塞,可以用asynctask或thread或handler来解决。 --------------------编程问答-------------------- 大哥有没有搞定啊.教我一下. --------------------编程问答-------------------- 这里面的异常直接捕获,弹个连接失败就行 --------------------编程问答--------------------
引用 9 楼 u010702937 的回复:
HttpResponse response = httpclient.execute(httppost); 执行到这里的时候就抛出异常了, 为什么?
lz你的问题解决了没有啊,我也刚遇到了这样的问题,你为什么说4.0之后要放大线程里面去呢,能不能跟我分享你是怎么解决的896788056QQ这是我号


访问网络不能直接在ui线程里面执行   需要另起线程

new Thread(){
public void run(){
//
HttpResponse response = httpclient.execute(httppost); 
//等等之类的
}
} --------------------编程问答-------------------- 我也出现了这个错误,调试了很久也不知道结果,后来找到问题解决了,下面是解决方法:
1. 把这些连接网络的代码放在新开的线程里,不能在UI线程中。
   new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
这里是线程在执行的代码
super.run();
}
}.start();
2. 在AndroidManifest.xml 里面加上访问网络的权限 <uses-permission android:name="android.permission.INTERNET" />,如果没有加,则会抛出警告:No address associated with hostname ,警告信息会在日子里面给出,而且还会提示在哪一行出错。


希望我的回答能够给你帮助... --------------------编程问答-------------------- 跪求原因啊 有没有大神啊???
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,