一、Android端代码:
//这是一个工具类,需要连接服务器的时候直接在所需的activity中调用静态方法即可
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
public class LandServer {
private static String url = "http://192.168.0.106:8080/Helper/servlet/";
private static String result;
private static HttpClient hc = new DefaultHttpClient();
public static String doPost(String path,String name, String psd) {
HttpPost hp = new HttpPost(url+path);
NameValuePair n = new BasicNameValuePair("username", name);
NameValuePair u = new BasicNameValuePair("password", psd);
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(n);
list.add(u);
try {
HttpEntity he =new UrlEncodedFormEntity(list,HTTP.UTF_8);
hp.setEntity(he);
HttpResponse response = hc.execute(hp);
System.out.println(response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
HttpEntity het =response.getEntity();
InputStream in = het.getContent();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
String redLine = null;
while((redLine=bf.readLine())!=null){
System.out.println("redLine: " + redLine);
result =redLine;
}
in.close();
}else{
System.out.println(response.getStatusLine().getStatusCode());
result = "error";
}
} catch (Exception e) {
e.printStackTrace();
result = "Exception";
}
System.out.println(result);
return result;
}
}
二、服务器端代码
//接受Android发来的请求,并从request中取出参数,通过response向Android端返回数据
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import utils.DealData;
import domain.User;
public class SchoolHelper extends HttpServlet {
// public SchoolHelper() {
// super();
// }
//
// public void destroy() {
// super.destroy();
//
// }
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username : " + username + " password" + password);
List<User>users = new ArrayList<User>();
users = DealData.getAllUsers("users");
User currentuser = new User();
boolean flag = false;
for(User u:users){
if(u.getUsername().equals(username)&&u.getPassword().equals(password)){
flag = true;
currentuser = u;
}
}
System.out.println(flag);
if(flag){
HttpSession session = request.getSession();
session.setAttribute("currentuser", currentuser);
out.print("true");
}else{
out.print("false");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
System.out.println("成功");
}
}
所以这两段代码结合起来就实现了一个Android应用的登录功能
三、注意
一定要给应用设置internet权限,否则打死都连不通(曾经被这个坑得很惨………………):
<uses-permission android:name="android.permission.INTERNET" />