Android Http客户端编程

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习指导
如果我们知道访问资源的URL,并且是基于HTTP的, 那么我们就可以使用HttpURLConnection类。通过 HttpURLConnection我们可以发送请求并获得响应。
学习指导
使用HttpURLConnection的步骤是先实例化一个URL对象,然后 通过URL的openConnection方法建立连接,发送请求并实例化 HttpURLConnection对象,通过调用HttpURLConnection对象的 getResponse方法判断是否请求成功,如果成功,则通过调用 HttpURLConnection对象的getInputStream方法获得输入流,从 服务器端读取信息。
Android HTTP 客户端编程
那么我们如何通过手机客户端向服务器发送请求呢?
在JAVA中,Java.net包里面的类是用于网络编程的, 其中java.net.URL类和java.net.URLConection类使编 程者可以方便地利用URL在Internet上进行网络通信。 HttpURLConnection是URLConnection的子类,是 支持 HTTP 特定功能的 URLConnection。
学习指导
学习指导
•在手机客户端编程中,我们也可以模仿这种方法发送GET请求。具 体代码如上图所示: 地址10.0.2.2是Android访问本地服务器的特定地址,与浏览器访问 127.0.0.1是一个意思。从代码中可以看到服务器端LoginServer的URL 地址和请求参数username、password通过?和&拼接在了一起。这 是GET方法提交请求参数的标准形式。将拼接好的URL字符串作为参 数生成URL对象,然后调用URL对象的openConnection方法建立连接 ,同时生成了HttpURLConnection对象conn,通过调用 HttpURLConnection对象的getResponseCode方法,可以检查请求是否 成功。如果成功则通过该对象获取服务器到手机客户端的输入通道 ,手机客户端通过该输入通道读取服务器发送过来的信息。
告知目标
这节课我们来学习用Android编写Http客户端程序去访 问Java Web服务器上的Servlet程序。
Android HTTP 客户端编程
• 例:在Android手机客户端创建一个UI界面,界面上设置 两个文本框和两个编辑框,两个文本框分别是两个编辑 框的标题,显示“UserName:”和“Password:”,每 个编辑框紧随各自的标题文本框之后,分别接受用户输 入用户名字符串和密码字符串。在文本框和编辑框的下 方,放置两个按钮,一个登录按钮,一个退出按钮。单 击登录按钮,则将用户名和密码提交给服务器,由服务 器判定是否合法用户,如果是合法用户,则服务器返回 欢迎信息,如果不是合法用户,则服务器返回非法用户 信息。手机客户端将服务器返回的信息通过对话框显示 出来,如图所示。在服务器端创建Servlet,响应请求并 且返回登陆结果。
Android HTTP 客户端编程
Android 的网络程序大大增强了手机客户端的功能。 通过网络,一个程序可以和成千上万的人进行通信; 可以获取世界上联网计算机中存储的信息;可以利 用许多计算机的能力来解决一个问题。Android 网络 应用程序最基本的形式是作为应用客户端。Android 客户端获取服务器的数据并显示。比较复杂的 Android 网络应用还会对获取的数据进行处理,不断 更新数据,向他人和计算机发送数据以实现实时交 互。在有线互联网领域,基于HTTP协议的应用是最 为广泛的,也就是我们所说的浏览器/服务器结构的 程序。随着移动互联网技术的发展,有线互联网上 成熟的应用纷纷转移到手机客户端,基于HTTP的手 机客户端/服务器结构的应用会更加广泛。
Android HTTP 客户端编程
Android与服务器的通信方式主要有两种,一是Http通信, 一是Socket通信。两者的最大差异在于,http连接使用的是 “请求—响应方式”,即在请求时建立连接通道,当客户端向 服务器发送请求后,服务器端才能向客户端返回数据。而 Socket通信则是在双方建立起连接后就可以直接进行数据的传 输,在连接时可实现信息的主动推送,而不需要每次由客户端 向服务器发送请求。
Android HTTP 客户端编程
例:
Android HTTP 客户端编程
我们已经在上节课创建了服务器端的Servlet类。上节课 我们是先访问静态页面Login_get.html,静态页面中插入 了表单,表单用于收集用户名和密码信息,然后通过浏览 器用GET请求方法将表单提交给服务器上的LoginServer, LoginServer将请求中的用户名和密码参数提取出来,进行 合法性判断,最后将判断结果发回浏览器。 现在我们要做的事情就是用手机客户端代替上节课的浏览 器,在手机客户端收集用户名和密码信息,通过手机客户 端向服务器端发起GET请求。
学习指导
•我们现在回顾一下浏览器的请求过程。 首先访问Login_get.html, 在网页中填写用户名和密码信息,如上图 所示:
学习指导
学习指导
点击Login按钮,向服务器发送登陆请求,如上图所示: 观察浏览器Leabharlann BaiduURL,URL的内容并不是 http://localhost:8080/smp1/login , 而是 http://localhost:8080/smp1/login?username=zhangsan&password=123 456, 实际上,这就是GET方法传递参数的形式,即: 浏览器在URL地址后以“?”形式带上数据,多个数据之间以&分隔 。
学习指导
这里的关键问题是如何才能将请求参数传递给服务器。如果URL直接 设定为http://localhost:8080/smp1/login,那么只是能够访问到服务器 端的LoginServer,但是用户名和密码信息并没有能够作为请求参数发 送给LoginServer。
学习指导
我们现在回顾一下浏览器的请求过程。
相关文档
最新文档