客户端与服务端的交互

上传人:鲁** 文档编号:504342472 上传时间:2023-07-02 格式:DOC 页数:20 大小:245KB
返回 下载 相关 举报
客户端与服务端的交互_第1页
第1页 / 共20页
客户端与服务端的交互_第2页
第2页 / 共20页
客户端与服务端的交互_第3页
第3页 / 共20页
客户端与服务端的交互_第4页
第4页 / 共20页
客户端与服务端的交互_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《客户端与服务端的交互》由会员分享,可在线阅读,更多相关《客户端与服务端的交互(20页珍藏版)》请在金锄头文库上搜索。

1、必备知识部分:服务端(生成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 ipeerfizati

2、on 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

3、,覆写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);jsonO

4、bject.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 方法中调用

5、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

6、 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 b

7、ject.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

8、();/放入一层对象数据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 = ; /定义要返回的字符串

9、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

10、= 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 = ; /定义要返回的字符

11、串try BasicHttpParams httpParams = new BasicHttpParams();/设置连接超时HttpConnectionParams.setSoTimeout(httpParams, 8000); / 请求时间 HttpConnectionParams.setConnectionTimeout(httpParams, 8000);/ 连接 时间client = new DefaultHttpClient(httpParams);/实例化一个客户端HttpPost post = new HttpPost(url);/ 定义 post 方法HttpResponse

12、 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( 得到的数据: + t

13、ext);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以后不可以在主线程中操作网络,需要新开一条线程 来联网获取数据。另外需要注意的一点是不可以

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号