您的位置:首页 > 编程语言 > Java开发

Android客户端连接Struts2服务器,连接不上的几个原因

2014-03-09 13:34 357 查看
用Android做client,搭建SSH做服务器端时,用Android模拟器或真机连接服务器时,遇到android.os.NetworkOnMainThreadException错误时,可能有几个错误,

1. mainfest.xml文件中没加访问网络的权限:添加<uses-permission android:name="android.permission.INTERNET"/>

2. 在主线程中添加以下代码,Android在4.0版本以后,不允许在主线程中访问网络(耗时),

方法一:在主线程中添加以下代码即可

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()

.detectDiskReads().detectDiskWrites().detectNetwork()

.penaltyLog().build());

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

.detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()

.build());

方法二:另外开启一个线程,在新开启的线程中来访问网络:

在主函数中发一个空消息:

new Thread(){

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

url = AuthUtil.getAuthorizationURL();

if (url == null) {

Toast.makeText(WebViewActivity.this, R.string.auth_url_empty, 3000).show();

}

handler.sendEmptyMessage(0);

}

}.start();

在handler中接受到消息 作出相应的处理

private Handler handler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case 0:

load(url, webView);

break;

}

};

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: