手机客户端与服务器端的Json 格式数据交互
以手机端的登陆界面为例
客户端与服务器数据交互,主要分为三步,如下图所示(类似于TCP/IP的三次握手)
android手机端
首先手机客户端声明一个异步的AsyncHttpClient对象,通过c.post()或c.get()的方式连接到服务器,
我用的是c.post()的方式,这个方法有几个重载的函数
c.post(url, responseHandler);
c.post(url, params, responseHandler);
url:请求的服务器端的servlet路径,params:要传到服务器短的参数;
responseHandler:处理器,处理服务器返回来的信息(Json 格式的数据用JsonHttpResponseHadler,xml格式的数据用TextHttpResponseHandler,图片用BinaryHttpResponseHandler),这里面要实现它的onSuccess()方法,返回来的数据在onSuccess()方法中获得,在根据实际情况进行相应的操作
当输入用户名和密码,点击登录按钮时执行Login()方法,获得输入的用户名和密码传给LoginServlet
当服务端返回数据之后(若返回的是则实现onSuccess(JsonObject response)方法,若是数组的话则实现onSuccess(JsonArray respoonse)方法),然后跳转到主界面,执行相应的操作
//手机界面登录时的操作 private void login(){ AsyncHttpClient c=new AsyncHttpClient(); RequestParams params=new RequestParams(); params.put("username",edit_username.getText().toString() ); params.put("password", edit_password.getText().toString()); params.put("client","android"); Log.d("MainActivity.this", "连接 开始。。。。。。。"); c.post("http://"+ConfigIp.ip+":8080/com.traveling.demo/LoginServlet", params, new JsonHttpResponseHandler(){ public void onSuccess(JSONObject response) { super.onSuccess(response); try { if("登陆成功".equalsIgnoreCase(response.getString("msg"))){ Intent intent=new Intent(); intent.setClass(MainActivity.this,GridActivity.class); intent.putExtra("id", response.getString("id")); MainActivity.this.startActivity(intent); Toast.makeText(MainActivity.this, ""+response.getString("msg").toString(), Toast.LENGTH_LONG).show(); Log.d("MainActivity",""+response.toString()); }else if("登陆失败".equalsIgnoreCase(response.getString("msg"))){ Toast.makeText(MainActivity.this,"用户名或密码错误", Toast.LENGTH_LONG).show(); } } catch (JSONException e) { e.printStackTrace(); } } }); }
web服务器端
服务器端接到请求取出用户名和密码,将用户名和密码封装到User对象中,将user对象作为参数传到UserUtil类中,然后再调用UserUtil中的loginCheck()方法执行数据库中的查询操作判断用户和密码是否正确的方法(该方法返回一个标志),再将id和要返回的信息封装到map对象中,最后将map以json格式返回(这里如果要返回的是对象的话用JsonObject,数组用JsonArray)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HashMap<String,Object> map=new HashMap<String,Object>(); req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); String username=req.getParameter("username"); String password=req.getParameter("password"); String client=req.getParameter("client"); //验证用户输入的用户名是否正确 User user=new User(); user.setUsername(username); user.setPassword(password); UserUtil uu=new UserUtil(user); map.put("state", "OK"); map.put("data", user); if("android".equalsIgnoreCase(client)) if(uu.loginCheck()==true){ map.put("msg","登陆成功"); map.put("id", uu.check()); //先返回一个状态码 resp.getWriter().print(JSONObject.fromObject(map).toString()); }else{ map.put("msg","登陆失败"); map.put("id", "false"); resp.getWriter().print(JSONObject.fromObject(map).toString()); } } }
相关推荐
Android客户端与服务器端的json数据交互(内含大量知识点),包含文件的上传,文件浏览器等。 Android客户端与服务器端的json数据交互(内含大量知识点),包含文件的上传,文件浏览器等。
Android客户端与服务器通信+json交互数据 客户端我用的是AndroidStudio写的
简单的android与服务器实现json数据交互解析,包含Gson方式和普通方式,实现四种json数据的交互解析
Android客户端与服务器端的json数据交互(服务端+客户端)
php与Android用json进行数据交互
servlet eclipse服务器端开发 android客户端 http json数据交互
基于json数据交互Android客户端与服务器端,包含网络连接,文件的上传,文件浏览器等。
Android客户端与服务器端的json数据交互(服务端客户端).zip