客户端与服务端的交互
必备知识部分:必备知识部分: 服务端(生成服务端(生成 JsonJson 数据)数据) :: 使用使用 MyeclipseMyeclipse:: 1 1、、 新建新建 Web projectWeb project:: 2 2、、 完成后的目录结构:完成后的目录结构: 3、写一个序列化、写一个序列化 jsonjson 的类,并继承自的类,并继承自 HttpServletHttpServlet,覆写,覆写 doGetdoGet 方法方法 自己写一个最简单的生成自己写一个最简单的生成 jsonObjectjsonObject 数据的方法:数据的方法: /** * 写json数据出来,类型jsonObject * */ publicpublic String toJson() { JSONObject jsonObject = newnew JSONObject(); trytry { jsonObject.put(“studentId“, “2012329700030“); jsonObject.put(“name“, “龙隆蟀舞“); jsonObject.put(“sex“, “男“); jsonObject.put(“password“, “55555555“); jsonObject.put(“major“, “数字媒体与技术“); } catchcatch (JSONException e) { e.printStackTrace(); } returnreturn jsonObject.toString(); } 然后在然后在 doGetdoGet 方法中返回该数据:方法中返回该数据: String temp = toJson(); resp.getOutputStream().write(temp.getBytes(“utf-8“)); resp.setContentType(“text/json;charset=utf-8“); // resp.getWriter().print(temp);//也是输出的一种办法 在在 doPostdoPost 方法中调用方法中调用 doGetdoGet 方法:方法:doGet(req, resp);doGet(req, resp); 3 3、、 然后配置然后配置 WebRootWebRoot 目录下的目录下的 WEB-INFWEB-INF 里的里的 web.xmlweb.xml,在,在web-appweb-app 节点里输入节点里输入 以下配置信息:以下配置信息: Json_Serialize com.zstu.practice.Json_Serialize Json_Serialize /Json_Serialize 4 4、、 然后将该工程部署到服务器上,在浏览器中访问该工程的地址:然后将该工程部署到服务器上,在浏览器中访问该工程的地址: http://localhost:8080/Practice/Json_Serializehttp://localhost:8080/Practice/Json_Serialize 成功后可以访问到如下内容:成功后可以访问到如下内容: 补充:补充: 刚才写的是一条刚才写的是一条 jsonObject(jsonjsonObject(json 对象对象) )数据,数据, 现在来写一条现在来写一条 jsonArray(jsonjsonArray(json 数组数组) )数据数据; ; 应用举例:应用举例: jsonObjectjsonObject可以用于返回查询可以用于返回查询具体某个学号具体某个学号的单个学生数据的单个学生数据 jsonArrayjsonArray可以用于返回查询可以用于返回查询具体某个专业具体某个专业的所有学生数据的所有学生数据 先改写下原来的先改写下原来的 toJsonObjecttoJsonObject 方法:方法: /** * 写json数据出来,类型jsonObject * */ publicpublic JSONObject toJsonObject() { JSONObject jsonObject = newnew JSONObject(); trytry { jsonObject.put(“studentId“, “2012329700030“); jsonObject.put(“name“, “龙隆蟀舞“); jsonObject.put(“sex“, “男“); jsonObject.put(“age“, “18“); jsonObject.put(“major“, “数字媒体与技术“); } catchcatch (JSONException e) { e.printStackTrace(); } //返回数据 returnreturn jsonObject; } 在写一个生成在写一个生成 jsonArrayjsonArray 的方法:的方法: /** * 写json数据出来,类型jsonArray * */ publicpublic String toJsonArray() { JSONArray jsonArray = newnew JSONArray(); // 放入一层对象数据 jsonArray.put(toJsonObject()); // 返回数据 returnreturn jsonArray.toString(); } 至此,服务端至此,服务端 jsonjson 格式的数据生成讲解完毕。格式的数据生成讲解完毕。 安卓端(数据请求:得到安卓端(数据请求:得到 JosnJosn)) 写一个写一个 httphttp 请求的基类:包括请求的基类:包括 GETGET 和和 POSTPOST 两种方式;两种方式; 首先,最简单的首先,最简单的 GETGET 方式:方式: /** * 得到 Json 的字符串,通过 GET 方式 * * @param url_path * @return */ public static String getJsonGET(String url_path) { String text = ““; // 定义要返回的字符串 try { URL url = new URL(url_path); HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 获取连接 conn.setRequest(“GET“);// 请求的方式为 GET conn.setConnectTimeout(4000);// 设置连接超时 int statusCode = conn.getResponseCode();// 获得状态码 if (statusCode == 200) { Stream is = conn.getStream();// 输入流 text = getStringFromStream(is);// 得到结果 return text; } else { text = “timeout“; return text; } }