资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
必备知识部分:服务端(生成Json数据):使用 Myeclipse :1、新建 Web project :New Web Project- 口 ICreate a Web ProjectCreate d Web |Jrib ti e rttirkspate dr ar uxtbiilutdiutiWeb Projeci Detai sPractice叵 Ume1 default hcatioriP reject Narre:匚orriext root URL:Loc-dticn;3irGHoryrSource fellderj:Wob root folri*r!J2EE ipeerfization LevsOJavj EE 6.0 (r Ja EE 5.0Q)2E I A QJ2EE 1J胡込*in Add Mjv*n cuppcrtMytcliose Maveh JtL Project Stardsrd Maven JEE Prcject酣”匡用hmtM服厂ir區巴j$TL SupportAdd JTL HibrarMif to WEB-INF/lfc folder? JRE Sy5tem Library dk1.7.0_17 t Su EE 5 LibrariesJ & WebRoot & META-IhF* 芒 WEBINF 凸lib 崗 web*xml index.j sp,覆写doGet方法3、写一个序列化json的类,并继承自HttpServlet 自己写一个最简单的生成jsonObject数据的方法:*写json数据出来,类型jsonObjectpublic String toJs on() studentld , 2012329700030); name,龙隆蟀舞”);sex,” 男);JSONObject jsonO bject = new JSONObject(); try jsonO bject.put(jsonO bject.put(jsonO bject.put( jsonObject.put(password, 55555555);jsonObject.put( major,数字媒体与技术”); catch (JSONException e) e.pri ntStackTrace();return jsonObject.toString();然后在doGet方法中返回该数据:Stri ng temp = toJs on();resp.getOutputStream().write(temp.getBytes(utf-8);resp.setC onten tType(text/js on; charset=utf-8);/ resp.getWriter().pri nt(temp);/也是输出的一种办法在 doPost 方法中调用 doGet 方法:doGet(req, resp);3、 然后配置 WebRoot目录下的 WEB-INF里的web.xml,在web-app节点里输入 以下配置信息:Json_Serializecom.zstu.practice.Js on _SerializeJson_Serialize/Js onSerialize4、然后将该工程部署到服务器上,在浏览器中访问该工程的地址:http:/localhost:8080/Practice/Json_Serialize成功后可以访问到如下内容:sex叩:男:student Id: rf2012329700030*,:18f Fam/:掙龙隆蟀舞S Fh jof T数字媒体与技术补充:刚才写的是一条jsonObject(json 对象)数据, 现在来写一条jsonArray(json 数组)数据;应用举例:先改写下原来的toJs onO bject方法:/*写json数据出来,类型jsonObjectpublic JSONObject toJso nObject() JSONObject jsonO bject = new JSONObject();try jso nObject.put(stude ntld2012329700030);jsonO bject.put(name,龙隆蟀舞);jsonO bject.put(jsonO bject.put(jsonO bject.put(sex,” 男);age , 18);major,数字媒体与技术); catch (JSONException e) e.pri ntStackTrace();/返回数据return jsonObject;在写一个生成jsonArray的方法:json Object json Array可以用于返回查询具体某个学号的单个学生数据 可以用于返回查询具体某个专业的所有学生数据/*写json数据出来,类型jsonArraypublic String toJs on Array() JSONArray jso nArray =new JSONArray();/放入一层对象数据json Array.put(toJs onO bject();/返回数据return jsonArray.toString();至此,服务端json格式的数据生成讲解完毕安卓端(数据请求:得到 Josn )写一个http请求的基类:包括 GET和POSTW种方式;首先,最简单的GET方式:/param url* return */*得到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.setRequestMethod(GET);/请求的方式为 GET获得状态码输入流得到结果conn.setConnectTimeout(4000);/设置连接超时int statusCode = conn.getResponseCode();/ if (statusCode = 200) InputStream is = conn.getInputStream();/ text = getStringFromInputStream(is);/ return text; else text = timeout; return text; catch (Exception e) e.printStackTrace(); text = timeout;return text; 然后另一种方式为 HttpClient 的 post :/* 通过 HttpClient 的方式public static String getJsonPOST(String url) HttpClient client = null;/定义一个客户端String text = ; /定义要返回的字符串try BasicHttpParams httpParams = new BasicHttpParams();/设置连接超时HttpConnectionParams.setSoTimeout(httpParams, 8000); / 请求时间 HttpConnectionParams.setConnectionTimeout(httpParams, 8000);/ 连接 时间client = new DefaultHttpClient(httpParams);/实例化一个客户端HttpPost post = new HttpPost(url);/ 定义 post 方法HttpResponse response = client.execute(post);/ 使用客户端执行 post 方法 , 返回给我们一个 HttpResponse 对象int statusCode = response.getStatusLine().getStatusCode();/ 获得状态码if (statusCode = 200) / 使用响应对象获得实体 , 获得输入流InputStream is = response.getEntity().getContent();text = getStringFromInputStream(is);System.out.println( 得到的数据: + text);return text; else System.out.println( 连接超时 );text = timeout; return text; catch (Exception e) e.printStackTrace();text = timeout;System.out.println( 错误 );return text; finally if (client != null) client.getConnectionManager().shutdown(); / 关闭连接和释放资源 然后就可以通过 get 或者 post 的方式得到相应 url 的数据: / 4.0 以上不可再主线程中操作网络,注意。切不可在子线程中更新 UInew Thread() public void run() Stringurlhttp:/10.127.127.1:8080/Practice/Json_Serialize;json Data = Utils_Http.getJso nPOST(url); ;.start();需要注意的是在安卓4.0以后不可以在主线程中操作网络,需要新开一条线程 来联网获取数据。另外需要注意的一点是不可以
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号