http基础(高级).pdf_第1页
http基础(高级).pdf_第2页
http基础(高级).pdf_第3页
http基础(高级).pdf_第4页
http基础(高级).pdf_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

httphttp基础基础 android平台手机应用开发技术培训 高级.第7讲 学习目标: 目标学员: 课程时长:45分钟 有java语言基础的开发者或在校计 算机相关专业大学生 学习并了解android中的联网框架。 掌握基本的http联网技巧。 httphttp基础知识基础知识 android的联网框架 包摘要 httpurlconnection简介 课程目录课程目录 综合演练 http协议 超文本传输协议 (http,hypertext transfer protocol) 是客户端浏览器或其他程序与web服务器 之间的应用层通信协议。也是互联网上应 用最为广泛的一种网络协议。 http协议的特点 简单快捷:客户向服务器请示服务时,只需传送请求方法和路径。 灵活:允许传输任意类型的数据对象。 无连接:每次连接只处理一个请求,应答后即断开。 无状态:指协议对于事务处理没有记忆能力。 http协议 http工作原理 首先客户端与服务器需要建立连接。 然后客户端发送一个请求给服务器。 服务器接到请求后给予相应的应答。 客户端接收服务器返回的信息。 客户端与服务器断开连接。 http协议 http/1.1协议中共定义了八种方法(有时也叫“动作”)来表明request-uri 指定的资源的不同操作方式: options head get post put delete trace connect http服务器至少应该实现get和head方法,其他方法都是可选的。 get主要用于获取信息,post主要用于发送信息。 get传送的数据量较小,不能大于2kb(这主要是因为受url长度限制)。 post传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于 服务器的处理能力。 get安全性较低,post安全性较高。 http协议 每个http请求或http应答都有一个头部数据(header) 每个头部数据包含一个或多个字段 字段与字段间采用crlf(回车换行符,“rn”)分隔 利用头部数据可以实现有条件的请求或应答 下面的示范是一个get请求的头部数据: http应答的结构与请求相似,只是第一行不同: 200是状态码,由3位数字组成,表示请求是否被理解或被满足。 get / http/1.1 accept:*/* content-type:text/html content-length:2873 http/1.1 200 ok http协议 每个http请求或http应答都有一个可选的消息体数据(body) 消息体数据是传输的数据实体 请求消息体数据和响应消息体数据都是由开始行,消息报头(可选的),空行 (只有ctlf的行),消息正文(可选的)组成 下面的示范是一个完整的应答: 从部分开始,就是消息体。 http/1.1 200 ok content-type: text/html content-length: 37 hello world http基础知识 androidandroid的联网框架的联网框架 包摘要 httpurlconnection简介 课程目录课程目录 综合演练 android的联网框架 android系统对网络通讯的支持是非常丰富的: 不仅兼容java语言中的包, 还提供了android平台所独有的包。 此外还提供更加强大的org.apache.http包它在java开源项目中被广泛使用。 包 主要提供了在java下访问http,socket及datagram协议的基本功能。 使用时基本只能通过同步的方式与网络交互。 同时,使用该框架需要具备java.io的基本知识。 org.apache.http包(httpclient) 它是一个使用非常广泛的apache开源项目。 它弥补了 灵活性不足的缺点,为客户端的http编程提供了高效、最 新、功能丰富的工具包支持。 android引入httpclient的同时还对它的一些封装和扩展,例如设置缺省的 http超时和缓存大小等。 包 用于增强android的网络访问功能, 在的基础上提供了: wi-fi设备管理, ssl(secure sockets layer,安全套接层)的支持, http请求队列管理, 及http连接池管理的功能, 在android手机上获取dhcp信息,并创建socket服务。 android的联网框架 基础知识 android的联网框架 包摘要包摘要 httpurlconnection简介 课程目录课程目录 综合演练 j包摘要 uri 表示一个统一资源标识符 (uri) 引用。 url 代表一个统一资源定位符,它是指向互联网“资源”的指针。 urldecoder url编码格式的解码工具类。 urlencoder url编码格式的编码工具类。 socket 此类实现客户端套接字(也可以就叫“套接字”) datagramsocket 此类表示用来发送和接收数据报包的套接字。 proxy 此类表示代理设置,通常为类型(http、socks)和套接字地址。 j包摘要 httpurlconnection 支持 http特定功能的urlconnection,主要使用它来进行联网操作。 cookiehandler cookie管理器,它提供一种回调机制将 http 状态管理策略实现挂钩到 http 协议处理程序。简单的说,它帮助我们处理cookie。 cacherequest 表示在responsecache中存储资源的通道。 cacheresponse 表示从responsecache获取资源的通道。 基础知识 android的联网框架 包摘要 httpurlconnectionhttpurlconnection简介简介 课程目录课程目录 综合演练 httpurlconnection摘要 disconnect() 指示近期服务器不太可能有其他请求(关闭套接字)。 geterrorstream() 如果连接失败但服务器仍然发送了有用数据,则返回错误流。 getfollowredirects() 是否应该自动执行http重定向。 getheaderfield(int n) 返回第n个头字段的值。 getheaderfielddate(string name, long default) 返回解析为日期的指定字段的值。 getheaderfieldkey(int n) 返回第n个头字段的key。 getinstancefollowredirects() 此httpurlconnection实例是否自动执行http重定向。 httpurlconnection摘要 getrequestmethod() 获取请求方法。 getresponsecode() 从http响应消息获取状态码。 getresponsemessage() 获取与来自服务器的响应代码一起返回的http响应消息(如果有)。 setfollowredirects(boolean set) 设置是否应该自动执行http重定向。 setinstancefollowredirects(boolean followredirects) 设置此httpurlconnection实例是否应该自动执行http重定向。 setrequestmethod(string method) 设置请求方法,一般是get或post,也可以是http支持的其他方法。 usingproxy() 指示连接是否通过代理。 httpurlconnection的使用 创建httpurlconnection的实例 这里要小心android的一个bug。反复发送请求,服务器有可能偶尔会返回状 态码为-1的应答包(-1不是符合http协议的有效状态码)。 可以在使用httpurlconnection之前,调用以下代码来修复这个bug。 设置连接参数 url url = newnew url(“”); httpurlconnection connection = (httpurlconnection)url.openconnection(); system.setproperty(“http.keepalive“, “false“); connection.setconnecttimeout(10000); connection.addrequestproperty(“user-agent“, “mozilla/5.0 (compatible; msie 6.0;)“); httpurlconnection的使用 连接到服务器 向服务器写数据(post需要写入数据,get不需要) 从服务器读取数据 关闭数据流 connection.connect(); outputstream outstream = connection.getoutputstream(); outstream.write(data,0,data.length); outstream.flush(); outstream.close(); in.close(); inputstream in = connection.getinputstream(); 基础知识 android的联网框架 包摘要 httpurlconnection简介 课程目录课程目录 综合演练综合演练 综合演练 本次演练将分别使用httpurlconnection的get和post方法,去完成一次远 程访问,并展示其结果。 演练使用了互联网上一个公开,免费的手机号 码归属地查询的web api。它同时提供了get 和post方式的访问支持。 创建项目httptest,并且制作本例的软件界面 (见右图,一个文本编辑框,两个按钮以及一 个用来显示结果的文本框)。 综合演练 需要在androidmanifest.xml中为访问http功能增加如下权限 在httptest1activity.java中为两个按钮增加点击事件,分别调用 get或post的测试方法 string ret = testget(phonenumber.gettext().tostring(); phonelocation.settext(“get方式:nn“ + ret); string ret = testpost(phonenumber.gettext().tostring(); phonelocation.settext(“post方式:nn“ + ret); 综合演练 手机归属地查询api简述: 调用地址: /locating/ url 参数: m: 手机号码; output: 输出格式。可选 xml、json、text(文本格式)。 callback: 回调函数名称(可选)。 使用get时只要访问如下形式的url即可(m的值是要查询的手机号): 使用post方式时,需要把“mhttpclient.setdoinput(true); int statuscode = httpclient.getresponsecode(); 综合演练 post方法摘要 在调用connect之前,需要进行如下设置: post必须指定content-type为application/x-www-form-urlencoded(默认) 或者multipart/form-data(一般在上传非ascii字符的文本或文件时用)。 调用connect之后,需要先调用getoutputstream方法获得outputstream,将 需要上传的内容上传完毕,然后的过程,就跟get过程一样了。 httpclient.setdooutput(true

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论