Code Bye

我的android小程序可以再模拟器上运行,到手机上运行出问题

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分
检查一下手机和你的电脑是不是连接到同一个局域网内。
引用 1 楼 sirius93 的回复:

模拟器运行在你电脑上,当然可以连接到你电脑上的本地服务器
手机又不是在你电脑上,当然连不到你的本地服务器,也就没response了

手机和电脑是处于同一 wifi 环境可以对服务器进行访问的,请求成功服务器有response!!

引用 2 楼 kifile 的回复:

手机和电脑是否处于同一 wifi 环境下,电脑的本地 ip 地址是否为192.168.1.102,可能开关机后 ip 地址发生改变

是处于统一wifi下,而且是在统一网段,每次开机我都会重置ip,不知道为什么访问失败。


5分
引用 4 楼 u012350993 的回复:
Quote: 引用 1 楼 sirius93 的回复:

模拟器运行在你电脑上,当然可以连接到你电脑上的本地服务器
手机又不是在你电脑上,当然连不到你的本地服务器,也就没response了

手机和电脑是处于同一 wifi 环境可以对服务器进行访问的,请求成功服务器有response!!

你的代码里catch里http异常以后没有return,还是继续执行后面代码,response当然为null。
调试一下看看异常的具体信息。

引用 3 楼 svenwang 的回复:

检查一下手机和你的电脑是不是连接到同一个局域网内。

是一个局域网,可能别的地方出问题了,就是想不通为什么会得到空值。


5分
说实话,我以前做一款通讯软件的时候,遇到过使用 httppost 有时候第一次无法正常访问的情况,于是我就使用了一个方法

先设置为 httpclient 设置超时时间,然后访问服务器,超时之后,判断 Exception 再次访问,就好了,可是设置一个最大的重连次数,避免无限死循环,但是具体原因不明


5分
引用 7 楼 u012350993 的回复:
Quote: 引用 3 楼 svenwang 的回复:

检查一下手机和你的电脑是不是连接到同一个局域网内。

是一个局域网,可能别的地方出问题了,就是想不通为什么会得到空值。

你的代码里catch里http异常以后没有return,还是继续执行后面代码,response当然为null。
调试一下看看异常的具体信息。


10分
看看这篇  http://523436424.blog.51cto.com/8575872/1548436 希望有用。。
引用 9 楼 svenwang 的回复:
Quote: 引用 7 楼 u012350993 的回复:
Quote: 引用 3 楼 svenwang 的回复:

检查一下手机和你的电脑是不是连接到同一个局域网内。

是一个局域网,可能别的地方出问题了,就是想不通为什么会得到空值。

你的代码里catch里http异常以后没有return,还是继续执行后面代码,response当然为null。
调试一下看看异常的具体信息。

在手机上调试,手机程序自动关闭,在logcat中显示一下错误

我的版本不太兼容,我不知道是不是这个的问题导致的我手机端不能访问,每次打开eclipse都会出现下面的错误


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明我的android小程序可以再模拟器上运行,到手机上运行出问题