private class LoginThread extends Thread { @Override public void run() { Looper.prepare(); String httpUrl = "http://192.168.1.102:8080/StudyCase1/user/login_android"; HttpPost httpRequest = new HttpPost(httpUrl); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username", str_loginName)); params.add(new BasicNameValuePair("password", str_loginPassword)); try { httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } HttpClient httpclient = new DefaultHttpClient(); Log.e("aaa1", httpRequest + ""); Log.e("aaa2", httpclient + ""); HttpResponse httpResponse = null; try { httpResponse = httpclient.execute(httpRequest); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } Log.e("aaa3", httpResponse + ""); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String strResult = null; try { strResult = EntityUtils.toString(httpResponse.getEntity()); } catch (IOException e) { e.printStackTrace(); } if (strResult.indexOf("success") != -1) { Toast.makeText(Login.this, "登陆成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Login.this, "登陆失败", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(Login.this, "请求错误", Toast.LENGTH_SHORT).show(); } 上面我的程序,我用Log.e()打印发现在模拟器上运行时,httpRequest 、httpclient 、httpResponse 不为空,而在手机上运行时发现httpRequest 、httpclient 不为空,但是httpResponse 为空,一时找不到原因,请各位大师指教??? |
|
5分 |
模拟器运行在你电脑上,当然可以连接到你电脑上的本地服务器
手机又不是在你电脑上,当然连不到你的本地服务器,也就没response了 |
5分 |
手机和电脑是否处于同一 wifi 环境下,电脑的本地 ip 地址是否为192.168.1.102,可能开关机后 ip 地址发生改变
|
5分 |
检查一下手机和你的电脑是不是连接到同一个局域网内。
|
手机和电脑是处于同一 wifi 环境可以对服务器进行访问的,请求成功服务器有response!! |
|
是处于统一wifi下,而且是在统一网段,每次开机我都会重置ip,不知道为什么访问失败。 |
|
5分 |
你的代码里catch里http异常以后没有return,还是继续执行后面代码,response当然为null。 |
是一个局域网,可能别的地方出问题了,就是想不通为什么会得到空值。 |
|
5分 |
说实话,我以前做一款通讯软件的时候,遇到过使用 httppost 有时候第一次无法正常访问的情况,于是我就使用了一个方法
先设置为 httpclient 设置超时时间,然后访问服务器,超时之后,判断 Exception 再次访问,就好了,可是设置一个最大的重连次数,避免无限死循环,但是具体原因不明 |
5分 |
你的代码里catch里http异常以后没有return,还是继续执行后面代码,response当然为null。 |
10分 |
看看这篇 http://523436424.blog.51cto.com/8575872/1548436 希望有用。。
|
在手机上调试,手机程序自动关闭,在logcat中显示一下错误 |