注意点:
1、访问网络的工作不能在主线程(UI)中进行,如果耗时过程则会导致程序出错 ------(子线程中进行)
2、子线程不能更新UI -------(主线程中进行)
3、使用Handler配合子线程更新主线程时要注意内存泄露的问题,解决内存泄露的方法之一就是以弱引用的形式:
//弱引用,防止内存泄露
private static class MyHandler extends Handler {
private final WeakReference<MainActivity> mActivity;
public MyHandler(MainActivity activity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
System.out.println(msg);
if (mActivity.get() == null) {
return;
}
mActivity.get().updateUIThread(msg);
}
}
4、在使用post向服务器发送请求时,要注意发送数据参数的格式,发送的参数是以key=value&key=value&key=value的格式进行发送的,value一般都要进行URL编码
//我们请求的数据
String data = "password="+ URLEncoder.encode(passwd,"UTF-8")+
"&username="+URLEncoder.encode(username,"UTF-8");
5、使用模拟器进行测试时,URL中的IP地址不是127.0.0.1,而是10.0.2.2
private static String LOGIN_URL = "http://10.0.2.2:8080/webtest/loginaction";
实例:在Android客户端中输入用户名和密码之后,将其提交至服务器,服务器进行判断用户名和密码是否正确,如果正确则返回success,失败则返回fail
配置服务器
在搭建好tomcat服务器之后,在eclipse中创建servlet文件
LoginAction.java(服务器)
package Login;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* Servlet implementation class LoginAction
*/
@WebServlet("/LoginAction")
pub