HttpGet抛出异常,不明白!求指导~

============问题描述============

想用数据库做一个登录验证的功能,服务器端响应正常,json数据包 {"ret":1,"num":123}

ret是登录正常时的状态值,num是号码:123

url是192.168.1.3:8080/web/getActInfo

params:num=123

通过logcat发现在httpGet中抛出了一个异常,但是搞不明白!!痛苦了一下午求点拨!

public String httpGet(String url, String params) throws Exception

{

String response = null;

if (null!=params&&!params.equals(""))

{

url += "?" + params;

}

int timeoutConnection = 8000;

int timeoutSocket = 10000;

HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established.

HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data.

HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

HttpClient httpClient = new DefaultHttpClient(httpParameters);

HttpGet httpGet = new HttpGet(url);

try

{

HttpResponse httpResponse = httpClient.execute(httpGet);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if (statusCode == HttpStatus.SC_OK) //SC_OK = 200

{

response = EntityUtils.toString(httpResponse.getEntity());

}

else

{

response = "状态码"+statusCode;

}

} catch (Exception e)

{

throw new Exception(e);

}

============解决方案1============

引用 2 楼 u013866421 的回复:

09-11 09:31:07.978: W/System.err(14854): java.lang.Exception: android.os.NetworkOnMainThreadException

09-11 09:31:07.990: W/System.err(14854):  at com.digitalcuc.service.SyncHttp.httpGet(SyncHttp.java:64)

09-11 09:31:07.990: W/System.err(14854):  at com.digitalcuc.RegActivity.RegAct(RegActivity.java:87)

09-11 09:31:07.990: W/System.err(14854):  at com.digitalcuc.RegActivity$1.onClick(RegActivity.java:45)

09-11 09:31:07.991: W/System.err(14854):  at android.view.View.performClick(View.java:4222)

09-11 09:31:07.991: W/System.err(14854):  at android.view.View$PerformClick.run(View.java:17457)

09-11 09:31:07.991: W/System.err(14854):  at android.os.Handler.handleCallback(Handler.java:725)

09-11 09:31:07.991: W/System.err(14854):  at android.os.Handler.dispatchMessage(Handler.java:92)

09-11 09:31:07.991: W/System.err(14854):  at android.os.Looper.loop(Looper.java:153)

09-11 09:31:07.991: W/System.err(14854):  at android.app.ActivityThread.main(ActivityThread.java:5305)

09-11 09:31:07.991: W/System.err(14854):  at java.lang.reflect.Method.invokeNative(Native Method)

09-11 09:31:07.991: W/System.err(14854):  at java.lang.reflect.Method.invoke(Method.java:511)

09-11 09:31:07.992: W/System.err(14854):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:848)

09-11 09:31:07.992: W/System.err(14854):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)

09-11 09:31:07.992: W/System.err(14854):  at dalvik.system.NativeStart.main(Native Method)

09-11 09:31:07.992: W/System.err(14854): Caused by: android.os.NetworkOnMainThreadException

09-11 09:31:08.005: W/System.err(14854):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)

09-11 09:31:08.006: W/System.err(14854):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)

09-11 09:31:08.006: W/System.err(14854):  at libcore.io.IoBridge.connectErrno(IoBridge.java:159)

09-11 09:31:08.006: W/System.err(14854):  at libcore.io.IoBridge.connect(IoBridge.java:112)

09-11 09:31:08.006: W/System.err(14854):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)

09-11 09:31:08.006: W/System.err(14854):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)

09-11 09:31:08.006: W/System.err(14854):  at java.net.Socket.connect(Socket.java:857)

09-11 09:31:08.006: W/System.err(14854):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)

09-11 09:31:08.007: W/System.err(14854):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)

09-11 09:31:08.007: W/System.err(14854):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)

09-11 09:31:08.007: W/System.err(14854):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)

09-11 09:31:08.007: W/System.err(14854):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:368)

09-11 09:31:08.007: W/System.err(14854):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:572)

09-11 09:31:08.007: W/System.err(14854):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:490)

09-11 09:31:08.008: W/System.err(14854):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:468)

09-11 09:31:08.008: W/System.err(14854):  at com.digitalcuc.service.SyncHttp.httpGet(SyncHttp.java:51)

09-11 09:31:08.008: W/System.err(14854):  ... 13 more

NetworkOnMainThreadException

网络请求不能放在主线程

开个线程获取数据

============解决方案2============

主线程不能做网络请求,你把这些网络操作放在新开的线程里或者异步任务里

时间: 2024-10-25 00:14:10

HttpGet抛出异常,不明白!求指导~的相关文章

《数据结构编程实验》 2.4.4Calendar个人见解,求指导

题目大意: 制作一个日历系统,输入年份,一些周年纪念日,及服务要求日期,根据要求日期输出,输出重要程度小于发生日期的周年纪念日. 题目地址: UVA  145 个人见解: 纯模拟,在闰年,输出顺序及输出范围可能跨年上有坑.解决了这些后,依旧困了我十多天,一直没过,求指导. 我的程序里先读入周年纪念日,l代表周年纪念日的数量,每读入一个服务日期,调用f()函数,f()函数里先计算每日期相对于当年月号的日期,然后Is()函数判断是否要输出并将要输出移至数组前方,k代表要输出的周年纪念日的数量,最后按

求指导

文件 ip.txt 192.168.0.1 zhangxc192.168.0.1 zhangxc1192.168.0.1 zhangxc3192.168.0.2 zhangc192.168.0.2 zhangc1192.168.0.3 zhangc192.168.0.3 zhangc192.168.0.3 zhangxc192.168.0.3 zhangxc192.168.0.0 zhang192.168.0.5 zhang192.168.0.0 zhang192.168.0.0 zhang19

android content provider 中的URL解析总是出问题?求指导!!!

java.lang.IllegalArgumentException: Unknown URL content:// 不管是自己写或者用别的的代码在我的eclipse中都是报这个错误 很怪,我的URL地址绝对没有写错,是不是和使用版本有关系?我的google提供的eclipse,sdk用的2.3.3 android content provider 中的URL解析总是出问题?求指导!!!

【急】c#服务器用套接字与android服务端互通训,要双向的,我自己写了一个,不成功,求例子,求指导,急啊

============问题描述============ c#服务端:  //创建监听端口.....  private void StartListening()         {               //创建IPEndPoint             IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.16.41.120"), 8897);               //创建Socket实例           s

Redis的util类,求指导

import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory; import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig; public class RedisUtils {        private static fina

关于Switch输入字母后死循环怎么解决求指导

zv8icw1w4w涌寂谱投废险股唾帘人<http://weibo.com/p/230927987529185612275712> gp9lxar77c澈藤患宗反劫橇油甭勘<http://weibo.com/p/230927987529322069762048> n6e463j1qj购厮丫嘉晕蛔谕亿止招<http://weibo.com/p/230927987527828582961152> b2zf8jq99h好手撤址擦厮偻蛹迫瘫<http://weibo.co

求一个大神运维大师 教我 我刚从事这个行业 我勤奋好学 求师傅

求一个大神运维大师 教我 我刚从事这个行业  我勤奋好学 求师傅 hello world  师傅 求指导  可以提要求  我喜欢linux 饥渴难耐了 感谢                    师傅

写给java初学者

写给java初学自学者(一) 开篇直奔主题,java学习个人感觉分为两种途径,第一种是在学校,在培训机构等地方学习,有人指导;第二种是自学,通过视频,书籍,朋友等完成学习. 本文适合 自学,且基础薄弱或者无基础的人. 下面先就几个常见问题做个问答式讲解: 1. 学java需要基础吗?学java需要英语什么水平? 当你问这些问题前,首先要给自己一个定位.你学java是用来干什么的? 如果你只是想找个这方面的工作,进入这个个行业,那么没有基础,英语水平一般(例如public static void

easyui表单多重验证,动态设置easyui控件

要实现的功能:在做添加学生信息的时候,利用easyui的验证功能判断 学号是否重复和学号只能为数字 最终效果如下图: 但在做这个的过程中,遇到了一系列的问题: 扩展validatebox的验证方法,最开始的验证代码如下: 1 //学号格式只能为数字 ****//这里没有问题**** 2 number: {//value值为文本框中的值 3 validator: function (value) { 4 var reg = /^[0-9]*$/; 5 return reg.test(value);