最近在学习android的网络通信,想做一个最普通的例子,即在pc上搭建tomcat6.0服务器,然后手机终端实现一个登录的小程序,要求登录的用户名和密码发送到服务器端,然后验证。使用http协议通信,不是socket。有谁手里有这样的例子的源代码,希望可以给我参考学习一下……网上找的一些只于http通信有点关系的帖子就不要贴过来了,要真正可以解决问题的答案,谢谢了!!
解决方案 »
- HttpClient设置超时的问题
- SIP服务器(Kamailio) 无法使用公网IP
- android4.0.3消息通知crash,急!
- 求教:Activity为什么会自动调用finish()方法
- android 加密有人懂吗
- 怎么设置带有日期的闹钟
- 有没有adb命令用来查看关于手机网络状态的
- 新手,有一个需求求知道思路
- MotionEvent.ACTION_MOVE 触发事件刷新频率太低
- 如何中断任务ffmpeg动态库执行中的任务?该调用哪个方法?
- (Android)怎么读取手机里的软件,然后显示到一个列表中,并可以对其进行卸载操作
- 在Android开发的 Eclipse环境下 不能使用Socket创建服务器?
1、Android端,处理逻辑的类。 // 登录方法
private boolean login(){
// 获得用户名称
String username = userEditText.getText().toString();
// 获得密码
String pwd = pwdEditText.getText().toString();
// 获得登录结果
String result=query(username,pwd);
if(result!=null&&result.equals("0")){
return false;
}else{
saveUserMsg(result);
return true;
}
} // 根据用户名称密码查询
private String query(String account,String password){
// 查询参数
String queryString = "account="+account+"&password="+password;
// url
String url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;
// 查询返回结果
return HttpUtil.queryStringForPost(url);
}
2、Android端,工具类。public class HttpUtil {
// 基础URL
public static final String BASE_URL="http://192.168.0.1:8888/MyServer/";
// 获得Get请求对象request
public static HttpGet getHttpGet(String url){
HttpGet request = new HttpGet(url);
return request;
}
// 获得Post请求对象request
public static HttpPost getHttpPost(String url){
HttpPost request = new HttpPost(url);
return request;
}
// 根据请求获得响应对象response
public static HttpResponse getHttpResponse(HttpGet request) throws ClientProtocolException, IOException{
HttpResponse response = new DefaultHttpClient().execute(request);
return response;
}
// 根据请求获得响应对象response
public static HttpResponse getHttpResponse(HttpPost request) throws ClientProtocolException, IOException{
HttpResponse response = new DefaultHttpClient().execute(request);
return response;
}
// 发送Post请求,获得响应查询结果
public static String queryStringForPost(String url){
// 根据url获得HttpPost对象
HttpPost request = HttpUtil.getHttpPost(url);
String result = null;
try {
// 获得响应对象
HttpResponse response = HttpUtil.getHttpResponse(request);
// 判断是否请求成功
if(response.getStatusLine().getStatusCode()==200){
// 获得响应
result = EntityUtils.toString(response.getEntity());
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
result = "网络异常!";
return result;
} catch (IOException e) {
e.printStackTrace();
result = "网络异常!";
return result;
}
return null;
}
// 获得响应查询结果
public static String queryStringForPost(HttpPost request){
String result = null;
try {
// 获得响应对象
HttpResponse response = HttpUtil.getHttpResponse(request);
// 判断是否请求成功
if(response.getStatusLine().getStatusCode()==200){
// 获得响应
result = EntityUtils.toString(response.getEntity());
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
result = "网络异常!";
return result;
} catch (IOException e) {
e.printStackTrace();
result = "网络异常!";
return result;
}
return null;
}
// 发送Get请求,获得响应查询结果
public static String queryStringForGet(String url){
// 获得HttpGet对象
HttpGet request = HttpUtil.getHttpGet(url);
String result = null;
try {
// 获得响应对象
HttpResponse response = HttpUtil.getHttpResponse(request);
// 判断是否请求成功
if(response.getStatusLine().getStatusCode()==200){
// 获得响应
result = EntityUtils.toString(response.getEntity());
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
result = "网络异常!";
return result;
} catch (IOException e) {
e.printStackTrace();
result = "网络异常!";
return result;
}
return null;
}
}
3、服务器端,处理登录逻辑的Servlet。public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
UserDao dao = new UserDaoImpl();
// 获得客户端请求参数
String username = request.getParameter("account");
String password = request.getParameter("password");
User u = dao.login(username, password);
if(u!=null){
// 响应客户端内容,登录成功
out.print(build(u));
}else{
// 响应客户端内容,登录失败
out.print("0");
}
out.flush();
out.close();
}
private String build(User u){
String userMsg = "";
userMsg+="id="+u.getId();
userMsg+=";";
userMsg+="name="+u.getName();
return userMsg;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void init() throws ServletException {
}
public LoginServlet() {
super();
} public void destroy() {
super.destroy();
}}
我也发送了一个demo到你的邮箱,数据库是使用mysql