新手求帮助~android与servlet通信连接不上 servletandroid通信服务器java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的servlet是用MyEclipse写的,android是用Eclipse写的,这个应该没问题吧 android4.0以后联网操作要放到子线程中 异步加载,android4.0以后是对android上网进行了相关要求 我把联网操作改到了子线程中:public class MainActivity extends Activity { TextView textView = null; Button btn = null; String result = ""; Handler handler = null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } void btnclick(){ new Thread(){ @Override public void run() { get(); handler.post(runnableUi); } }.start(); } void init(){ textView = (TextView)findViewById(R.id.result); btn = (Button)findViewById(R.id.button); handler = new Handler(); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { btnclick(); } }); } void get(){ /* * 用Get方式向服务器发送数据 */ String strUrl = "http://61.132.138.212:8080/AndroidJEEServlet/ServletTest?param=helloMK"; URL url = null; try{ url = new URL(strUrl); HttpURLConnection urlConn = (HttpURLConnection)url.openConnection(); Log.e("3","MK"); InputStreamReader in = new InputStreamReader(urlConn.getInputStream()); Log.e("4","MK"); BufferedReader bufferedReader = new BufferedReader(in); String readline = null; while((readline = bufferedReader.readLine())!=null) { result += readline; } in.close(); urlConn.disconnect(); }catch(Exception e){ textView.setText("连接超时"); } } //ui的更新必须在主线程中,而handler则可以在子线程将这个Runable post过去执行,及实现了在子线程中更新ui。 Runnable runnableUi = new Runnable() { @Override public void run() { textView.setText(result); } };}但是在log打印出3之后就又没有反应了,但是这次并没有出现才catch异常中的“连接超时”您能否帮我看一下是不是代码哪里有问题? 我把联网操作放入了子线程中,但是仍然在log打印3之后没有了反应,您能否帮我看一下是为何? 我把联网操作放入了子线程中,但是仍然在log打印3之后没有了反应,您能否帮我看一下是为何?我只想说句,这不是子线程这还是绑定在主线程吧,把thread里面的(Runnable)单独写成一个java文件吧,,, 我只想说,单步调试看看报什么错,估计是没写权限。PS:catch里不能那么写,子线程中不能直接操作ui。 其实还有个办法,在oncreate下面加入StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build()); 百试不爽 android 点击TabHost选显卡弹出PopupWindow时报错! android 调用 webservice,待高人指教 android 加载图片渐变效果 Android手机通过Wifi与PC机之间进行通信问题 (有代码) Android源码编译时如何在TARGET_OUT_DATA下创建目录 关于建立一个通讯录的问题 android 如何对从麦克风获取的数据进行处理 Unity+GPS ImageView 边缘阴影特效 安卓开发——百度地图SDK 请问怎样Hook安卓内核函数? 请问ndk-build里的make不支持.mk里文件名为*.c?
TextView textView = null;
Button btn = null;
String result = "";
Handler handler = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
void btnclick(){
new Thread(){
@Override
public void run() {
get();
handler.post(runnableUi);
}
}.start();
}
void init(){
textView = (TextView)findViewById(R.id.result);
btn = (Button)findViewById(R.id.button);
handler = new Handler();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
btnclick();
}
});
}
void get(){
/*
* 用Get方式向服务器发送数据
*/
String strUrl = "http://61.132.138.212:8080/AndroidJEEServlet/ServletTest?param=helloMK";
URL url = null;
try{
url = new URL(strUrl);
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
Log.e("3","MK");
InputStreamReader in = new InputStreamReader(urlConn.getInputStream());
Log.e("4","MK");
BufferedReader bufferedReader = new BufferedReader(in);
String readline = null;
while((readline = bufferedReader.readLine())!=null)
{
result += readline;
}
in.close();
urlConn.disconnect();
}catch(Exception e){
textView.setText("连接超时");
}
}
//ui的更新必须在主线程中,而handler则可以在子线程将这个Runable post过去执行,及实现了在子线程中更新ui。
Runnable runnableUi = new Runnable() {
@Override
public void run() {
textView.setText(result);
}
};
}但是在log打印出3之后就又没有反应了,但是这次并没有出现才catch异常中的“连接超时”
您能否帮我看一下是不是代码哪里有问题?
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build()); 百试不爽