http通讯协议(二)(高级).pdf

上传人:小小飞 文档编号:3330396 上传时间:2019-08-13 格式:PDF 页数:28 大小:1MB
返回 下载 相关 举报
http通讯协议(二)(高级).pdf_第1页
第1页 / 共28页
http通讯协议(二)(高级).pdf_第2页
第2页 / 共28页
http通讯协议(二)(高级).pdf_第3页
第3页 / 共28页
http通讯协议(二)(高级).pdf_第4页
第4页 / 共28页
http通讯协议(二)(高级).pdf_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《http通讯协议(二)(高级).pdf》由会员分享,可在线阅读,更多相关《http通讯协议(二)(高级).pdf(28页珍藏版)》请在三一文库上搜索。

1、HttpHttp通讯协议(二)通讯协议(二) Android平台手机应用开发技术培训 高级.第10讲 学习目标: 目标学员: 课程时长:45分钟 有JAVA语言基础的开发者或在校计 算机相关专业大学生 学习并了解网络通讯协议的相关知识。 同时学习如何在Android中开发互联网软 件。 软件功能分析软件功能分析 网络API的使用 在线笑话模块 常用协议简介 课程目录课程目录 前言 本次课程将会更加贴近实战。 我们将借用Google AJAX Feed API,为笑话大全增加在线阅读功能。 借此,我们将学习如下技能: 归纳出自己的Http工具类 进一步掌握XML和JSON的使用 进一步了解Web

2、View 了解使用Html配合JavaScript制作软件 最重要的是,我们将借此了解互联网开放API的使用。在移动应用开发领域, 它将是非常重要的一个技能。 软件功能分析 为笑话大全增加一个在线阅读模块。 它利用Google AJAX Feed API,从网络 获取在线笑话网站的RSS结果。 然后将RSS结果利用JavaScrpt及HTML 技术制作成界面并使用WebView显示。 软件功能分析 网络网络APIAPI的使用的使用 在线笑话模块 常用协议简介 课程目录课程目录 互联网开放API简介 不知从何时开始,开放API成为各大互联网站点的首要任务。不论是Google 还是国内的renre

3、n。Open API似乎已经成为Web2.0的象征。 时至今日,已经有无数应用软件衍生于这些API。这些应用不仅没有因为使用 “别人的服务”而受到限制,反而因此而轻易获得了强大的功能,同时分享到很 多的用户。 同时,这种利用互联网Open API进行软件架构的技术,被技术界赋予一个非 常时尚的名字,Mashup(混搭)。 Mashup的关键在于如何使用这些Open API。对此,不必担心。只要掌握 HTTP的使用技巧,懂得操作XML,JSON,基本上就可以享受Mashup的乐 趣了。 Google AJAX Feed API 首先,我们需要介绍一下RSS的含义: RSS也叫聚合RSS是在线共享

4、内容的一种简易方式(也叫聚合内容, Really Simple Syndication)。 RSS不同于传统网站被动的浏览模式,它可以通知用户自己是否更新。 此外,RSS具有结构化的,更清晰简单的语法定义,有利于对内容的描 述和搜索。 对于开发人员来说,RSS由XML描述,它有很多种版本需要我们的程序 做额外的处理。 通过Google AJAX Feed API,我们可以使用几行代码,轻易的处理各种版本 的RSS,而无需考虑RSS繁多的版本。 Google AJAX Feed API的使用将极大的简化开发,减小工作量和难度。 Google AJAX Feed API 我们将使用Google A

5、JAX Feed API的两个API 第一个API,load用于读取RSS内容 第二个API,lookup,用于在给定的URL中查询是否有合适的RSS源(简单的 说,我们提供一个笑话网站的地址,它会自动查找该地址,并返回可用 的笑话RSS输出。下面是该接口的JSON返回结果)。 搜索器搜索器 基本网址基本网址 载入供稿 http:/ 查找供稿 http:/ Google AJAX Feed API lookup(查找)接口的返回示例: 这是一个JSON形式的数据 responseStatus表示应答状态码,200表示成功 responseDetails表示应答详细,如果出错时,该元素存放错误信

6、息 responseData表示应答内容,它将包含查找结果 “responseData“: “query“:“http:/ “url“:“http:/ “responseDetails“: null, “responseStatus“: 200 Google AJAX Feed API load(载入)接口的返回示例: responseStatus表示应答状态码,200表示成功 responseDetails表示应答详细,如果出错时,该元素存放错误信息 responseData表示应答内容,它将包含查找结果。 其中,结果是feed结构,它是JSON对象,包含RSS数据源的各种信息: title

7、,供稿标题 link,供稿的HTML网址 description,说明 author,作者 entries,内容数组(对我们的软件而言,一个个的笑话,就在其中) “responseData“ : “feed“ : , “responseDetails“ : null, “responseStatus“ : 200 Google AJAX Feed API entries代表供稿中所有条目的列表,entry的定义如下: entry title,条目标题。 link,条目的HTML网址。 content,条目的正文,包括 HTML 标签。 contentSnippet,content 属性的摘要(

8、小于 120 个字符)。此片断不 包含任何 HTML 标签。 publishedDate,发布日期,形如: “13 Apr 2007 12:40:07 -0700”。 categories,条目的字符串标签的列表。 entry实际上囊括了所有RSS版本的关键信息,这里只罗列了关键的部分。 对笑话大全而言,我们只关心title(笑话标题)和content(笑话内容)。 软件功能分析 网络API的使用 在线笑话模块在线笑话模块 常用协议简介 课程目录课程目录 移动互联网应用的设计要点 移动互联网应用,可以发挥手机能随时随地连接互联网的优势。访问内容丰 富的互联网资源,这将为移动应用注入强劲的生命力

9、。在开发移动互联网应 用时,应注意以下几点: 连接不总是可靠,我们必须做好连接无法访问或者访问异常的准备。 需要考虑连接速度,应该避免UI因连接时间长而死锁。GPRS还比较慢 并且目前仍然是主流。 尽量采用跨平台网络格式和交互协议,如JSON,XML及SOAP等。 适当的使用缓存,使软件操作更平滑 应该避免大数据量的交互 在线笑话模块的开发流程 制作HTTP工具类HttpHelper ,完成简单的HTTP功能的封装 使用WebView作为显示控件创建“在线笑话”模块JokeOnlineView 在JokeListView的菜单中为JokeOnlineView增加一个菜单项 在JokeOnlin

10、eView中使用HttpHelper实现Google AJAX Feed API的调用方法 在JokeOnlineView中实现其它相关的接口,以便JavaScript进行调用 使用HTML和JavaScript技术,制作简单的“在线笑话”的界面,并且调用Java 方法去执行远程操作,访问Google AJAX Feed API,最终将结果交给HTML 进行展示。 HttpHelper的制作 之前的课程我们讲解了HTTP的使用,关键是HttpURLConnection方法。实际 开发中往往将其归纳成一个工具类,方便反复使用。 首先在HttpHelper创建时增加了URL健壮性检测的相关代码。

11、然后在HttpHelper中封装HttpURLConnection的联网代码。留意网络超时以及 冲顶向等等细节。 最后将GET结果按byte数组的形式返回(我们只用到了GET方法)。 JokeOnlineView的制作 创建JokeOnlineView ,并为这个Activity指定一个WebView作为其视图。 WebView的构造和设置可以参考以前的课程。这里我们将使用HTML来制作 在线笑话模块的界面,并且用它来展示远程结果。 注意,我们需要打开JavaScript支持 指定Java调用接口,这样在JavaScript代码中就可以调用Java方法了 其中的api是在JokeOnlineV

12、iew 中定义的一个Java对象,它的引用将通 过上面的方法被传入JavaScript引擎,然后我们通过JSAPI.KEY就可以进行 它的方法调用了。 WebSettings setting = webview.getSettings(); setting.setJavaScriptEnabled(true); webview.addJavascriptInterface(api, JSAPI.KEY); JSAPI的制作 在JokeOnlineView 中创建内部类JSAPI,它将作为JavaScript与Java的桥梁 被JavaScript所使用。下面是Google AJAX Feed

13、API的lookup接口: 其中,使用URL形式的远程API,使用HttpHelper调用了lookup方法,将返回 其字符串结果(如之前的介绍,这个结果是一个JSON应答)。 public String feedLookup(String url) StringBuffer sb = new StringBuffer( “http:/ sb.append(URLEncoder.encode(url, “UTF-8“); sb.append(“ String newUrl = sb.toString(); HttpHelper httpHelper = new HttpHelper(newUr

14、l); byte data = httpHelper.httpGET(); String ret = new String(data, “UTF-8“); return ret; JSAPI的制作 在JSAPI中,还需要讲解一下alert函数(showProgressDialog和 hideProgressDialog与之类似): 这个方法的作用是弹出一个警告框,其中的runOnUiThread函数可以让一个 线程在UI现成上执行。这样做的原因是:我们可能在其它的线程调用了这个 函数,但是该函数的内容涉及到改变UI,而改变UI的方法不能在UI线程之外 被执行。所以,我们可以使用这样的办法来解决

15、。 public void alert(final String title, final String msg) ins.runOnUiThread(new Thread() public void run() new AlertDialog.Builder(ins).setTitle(title) .setMessage(msg).show(); ); HTML界面的制作 在线笑话模块并没有使用Android自身的控件, 而是用了WebView结合HTML来制作软件界面。 因为互联网API返回的数据,对于浏览器往往 比较友好。之所以采用这种方法,一方面节省 时间;另一方面也希望借此为大家展

16、示一种新 的开发思路。 请注意assets/rss/main.html文件(效果见上图),我们可以使用任意的 HTML编辑工具来制作它。 我们将使用JavaScript让两个按钮分别调用刚才JSAPI中实现的Java方法(联 网访问Google AJAX Feed API并返回JSON结果),然后再将返回的结果显 示到HTML界面上即可。 JavaScript关键代码 在assets/rss/main.html文件中,需要引入JSON类库,这样才可以读取之前 提到的JSON结果 使用JavaScript实现lookup接口,关键代码如下: var strret = window.sys.fee

17、dLookup(lookurl.value); var lookup = document.getElementById(“lookup“); var ret = JSON.parse(strret); var msg = “statuscode: “ + ret.responseStatus + “; msg += “details: “ + ret.responseDetails + “; msg += “query: “ + ret.responseData.query + “; msg += “feed: “ + ret.responseData.url + “; lookup.inn

18、erHTML = msg; JavaScript关键代码 接下来使用JavaScript实现load接口,与刚才讲解的lookup接口相似。 最后,不要忘了为界面上了两个按钮添加onclick事件,分别调用刚才实现的 两个方法。 lookup load 总结 到此,执行代码可以看到右边的结果。 我们经过简单的编码就拥有了一个简 易的RSS阅读器强大的Google帮我们 完成了最困难的事情,剩下的只是使 用JSON或XML进行HTTP访问。就是 这么简单。 目前只是集成了一个笑话网站,并展 示其RSS笑话内容。内容的订阅和管 理等功能没有实现。不过本次课程的 目的已经达到,那就是展示互联网应 用

19、编程的基本方法。 软件功能分析 网络API的使用 在线笑话模块 常用协议简介常用协议简介 课程目录课程目录 常用协议简介 基于XML的协议 SOAP,简单对象访问协议。是一种轻量级,简单的,基于XML的协议。 它被设计成在WEB上交换结构化的和固化的信息。 XML-RPC,XML远程方法调用( XML Remote Procedure Call )。是 工作在Internet上的远程过程调用协议。 常用协议简介 基于JSON的协议 JSON-PRC, 一个类似于XML-RPC的协议(RPC的JSON版本)。 基于二进制的协议 RMI,远程方法调用( Remote Method Invocation )。RMI目前使用 Java远程消息交换协议JRMP进行通信。 Hessian,一个轻量级的开源远程调用工具。支持几乎所有的编程语言, 目前使用比较广泛。 ProtoBuf,一种语言无关、平台无关、扩展性好的用于通信协议、数据 存储的结构化数据串行化方法( Google提出的)。 总结 移动互联网应用的相关知识 使用JSON进行远程通讯 关于远程调用的协议的相关知识 本课程到此结束,谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1