最近在学习android的网络通信,想做一个最普通的例子,即在pc上搭建tomcat6.0服务器,然后手机终端实现一个登录的小程序,要求登录的用户名和密码发送到服务器端,然后验证。使用http协议通信,不是socket。有谁手里有这样的例子的源代码,希望可以给我参考学习一下……网上找的一些只于http通信有点关系的帖子就不要贴过来了,要真正可以解决问题的答案,谢谢了!!

解决方案 »

  1.   

    给你一些我写过的代码片段吧。
    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();
    }}
      

  2.   

    二楼能把项目的布局截图给我看看么?或者直接发我邮箱:[email protected]
      

  3.   


    我也发送了一个demo到你的邮箱,数据库是使用mysql