手机上的android程序如何连接上电脑上Tomcat网页并访问网络

       刚开始学习android,遇到各种各样的问题,比如手机连上电脑的WIFI后,手机上自己编的android程序无法访问电脑上Tomcat的资源等,这里分享一下经验。

一、

  在电脑上搭建好了Tomcat,通过localhost:8080访问Tomcat的主页保证是没问题的,同时保证访问http://localhost:8080/index.jsp也没问题。

二、

手机打开WIFI并连接,调试程序的时候可能会发现网络连接的错误,代码如下:(布局只有一个TextView)
public class MainActivity extends Activity {
	boolean flag = false;
	TextView info = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		info = (TextView) super.findViewById(R.id.info);	
		final Handler handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				if (flag) {
					info.append("用户登录成功!");
				} else {
					info.append("用户登录失败!");
				}
//				Bundle data = msg.getData();
//				String val = data.getString("value");
//				Log.v("mylog", "请求的结果为--》" + val);
			}
		};
		Runnable runnable = new Runnable(){
			@Override
			public void run() {
				try{
					Log.e("测试", "连接开始");
					URL url = new URL("http://172.21.14.195:8080/myWeb/"
							+ "android.jsp?id=lixinghua&password=mldn");
					HttpURLConnection conn = (HttpURLConnection) url
							.openConnection();
					conn.connect();
					Log.e("测试", "连接完成");
					int res=conn.getResponseCode();
					Log.e("测试",String.valueOf(res));
					byte[] data1 = new byte[512];
					int len = conn.getInputStream().read(data1);
					Log.e("测试", "读取数据完成");
					if (len > 0) {
						String temp = new String(data1, 0, len).trim();
						flag = Boolean.parseBoolean(temp);
					}
					conn.getInputStream().close();
//					Message msg = new Message();
//					Bundle data = new Bundle();
//					data.putString("value", "请求结果");
//					msg.setData(data);
					handler.sendEmptyMessage(0);
				}catch(Exception e){
					Log.e("异常", Log.getStackTraceString(e));
				}
				
			}
		};
		new Thread(runnable).start();
}
结果在conn.connect()处出现了异常,后来发现电脑的本地IP地址为172.21.14.195而手机的IP地址为192.168.191.2,不在同一个网段(在打开网络与共享中心可以查看,本地地址的掩码为255.255.254.0,两IP地址前23位的网络地址不一样),然后无法访问电脑上的Tomcat网页,都是万恶的WIFI共享和校园网惹的祸。

三、

这个时候呢我们会看到另一个网络连接,如图:

点击查看另一个有共享WIFI产生的网络连接(无线网络连接6)的IP地址,发现它为192.168.191.1,刚好和手机的IP地址在同一个网段。这个时候电脑其实有两个IP地址,这两个IP地址用哪个都可以访问Tomcat,比如http://192.168.191.1:8080/index.jsp  好了,接下来只要把android程序中访问的网络地址改为"http://192.168.191.1:8080/myWeb/android.jsp?id=lixinghua&password=mldn"即可成功访问。

四、

安卓4.0以上的程序要访问网络的资源需要新建一个子线程,在子线程里连接网络,在handle中处理UI(因为不知道主线程和子线程的执行,在上面的代码中flag在handle中处理可以保证在经过了
flag = Boolean.parseBoolean(temp)后才被执行,才能正确的更新UI。直接在onCreate中处理的话很可能flag还来不及改变
),如上面代码所示。

五、附上一张手机登陆Tomcat主页的截图



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值