当前位置:

首页 > 系统应用 > 7.1.1 Android网络编程要学的东西与Http协议学习

7.1.1 Android网络编程要学的东西与Http协议学习

本文目录

    本节引言: 不知不觉终于来到Android网络编程这一章节,前面我们玩的都是单机,肯定是不过瘾是吧, 本节开始我们来学习Android网络编程相关的一些东西:Android端网络编程要干嘛?Http协议 的学习,使用自带扣脚Json解析类解析Json,XML解析的几种常用方式,HttpUrlConn

    本节引言:

    不知不觉终于来到Android网络编程这一章节,前面我们玩的都是单机,肯定是不过瘾是吧, 本节开始我们来学习Android网络编程相关的一些东西:Android端网络编程要干嘛?Http协议 的学习,使用自带扣脚Json解析类解析Json,XML解析的几种常用方式,HttpUrlConnection和 HttpClient的使用,文件的上传,下载;WebService的使用,WebView,Socket通信的使用等!

    另外我们是客户端,服务端的内容不在我们的范畴,而且小猪也不擅长,我们的最低要求是: 能够掌握获取与解析服务器反馈的数据的能力! 好的,话不多说,开始本节内容!

    1.Android与互联网交互的三种方式

    2.初识Http协议

    实际开发中我们和服务端打交道一般用得都是基于Http协议的通信,所以学好Http协议是非常 重要的,当然,我们不用过于考究一些细节的东西,有个大体的了解即可!都是一些概念性的东西!

    1)什么是Http协议?

    答:HTTP,全称 hypertext transfer protocol(超文本传输协议),属于 TCP/IP 协议体系中的应用层协议,主要用来约定 Web 浏览器和 Web 服务器之间交换数据的方式。客户端连接到 Web 服务器之后,如果想获取服务器上的某个 Web 资源,就必须按照统一的通信规则来完成请求与响应,而 HTTP 协议,定义的正是客户端与 Web 服务器之间这套通信格式。

    2)Http 1.0 与 Http 1.1的区别

    答:1.0协议,客户端与web服务器建立连接后,只能获得一个web资源! 而1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源!

    3)Http协议的底层工作流程:

    答:我们先要知道两个名词:

    • SYN(synchronous):TCP/IP建立连接时使用的握手信号
    • ACK(Acknowledgement):确认字符,确认发来的数据已经接受无误

    接着就到TCP/IP三次握手的概念:

    • 客户端发送syn包(syn = j)到服务器,进入SYN_SEND状态,然后等待服务器确认
    • 服务器收到syn包,确认客户的syn(ack = j + 1),同时在自己也发送一个SYN包(syn=k), 即SYN + ACK包,服务器进入SYN_RECV状态
    • 客户端收到SYN + ACK包,向服务器发送确认包ACK(ack = k +1),发送完毕后,客户端与服务端 进入ESTABLISHED状态,完成三次握手,然后两者开始传送数据

    如果还不是很清晰,我们再来看三次握手的示意图:

    了解了是吧,然后我们就来看看Http操作的一个流程了:

    • 用户点击浏览器上的url(超链接),Web浏览器与Web服务器建立连接
    • 建立连接后,客户端发送请求给服务器,请求的格式为: 统一资源标识符(URL)+协议版本号(一般是1.1)+MIME信息(多个消息头)+一个空行
    • 服务端收到请求后,给予相应的返回信息,返回格式为: 协议版本号 + 状态行(处理结果) + 多个信息头 + 空行 + 实体内容(比如返回的HTML)
    • 客户端接收服务端返回信息,通过浏览器显示出来,然后与服务端断开连接;当然如果中途 某步发生错误的话,错误信息会返回到客户端,并显示,比如:经典的404错误!

    对于上面的流程如果还不清晰,我们可以使用HttpWatch或者firefox抓下包: PS:测试网站是小猪的学校的教务系统,输入账号密码后请求登陆,我们可以看到下述信息:

    HTTP请求包含的内容:

    HTTP响应包括的内容:

    这就一目了然了是吧!

    4)Http协议的业务流程

    5)Http的几种请求方式

    实际开发中我们用得较多的方式是Get和Post,但是实际开发可能还会用到其他请求方式,比如PUT, 小猪的实际项目中就用到了,下面为了方便大家,就把所有的请求方式列出来吧:

    • Get:请求获取Request-URI所标识的资源
    • POST:在Request-URI所标识的资源后附加新的数据
    • HEAD 请求获取由Request-URI所标识的资源的响应信息报头
    • PUT:请求服务器存储一个资源,并用Request-URI作为其标识
    • DELETE:请求服务器删除Request-URI所标识的资源
    • TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
    • CONNECT:保留将来使用
    • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项

    6)Get和Post的对比

    用得最多的两个,当然要做下对比啦!

    • GET:在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔, 但数据容量通常不能超过2K,比如:http://xxx?username=…&pawd=…这种就是GET
    • POST: 这个则可以在请求的实体内容中向服务器发送数据,传输没有数量限制
    • 另外要说一点,这两个玩意都是发送数据的,只是发送机制不一样,不要相信网上说的 "GET获得服务器数据,POST向服务器发送数据"!!另外GET安全性非常低,Post安全性较高, 但是执行效率却比Post方法好,一般查询的时候我们用GET,数据增删改的时候用POST!!

    7)Http状态码合集

    当然,这些状态码更多是拿来作参考,真正怎么定,还是服务器端(后台)说了算。常见做法有两种:一种是请求发出后,服务器返回对应的状态;另一种在应用不需要做多语言版本时其实更省事,直接返回一段带结果信息的 Json,前端拿来直接展示就行,能省掉不少折腾。下面把状态码整理成一份合集,了解一下就够了:

    • 100~199 : 成功接受请求,客户端需提交下一次请求才能完成整个处理过程
    • 200: OK,客户端请求成功
    • 300~399:请求资源已移到新的地址(302,307,304)
    • 401:请求未授权,改状态代码需与WWW-Authenticate报头域一起使用
    • 403:Forbidden,服务器收到请求,但是拒绝提供服务
    • 404:Not Found,请求资源不存在,这个就不用说啦
    • 500:Internal Server Error,服务器发生不可预期的错误
    • 503:Server Una vailable,服务器当前不能处理客户端请求,一段时间后可能恢复正常

    8)Http协议的特点

    概念性的东西,知道就好,别去背,百度百科的东西,直接复制粘贴:

    1. 支持客户/服务器模式。

    2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、 HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    4. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求, 并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    5. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。 缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每 次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    PS:关于OSI七层协议以及TCP四层模型就不在基础系列讲解了~有兴趣可以自行了解下!

    本节小结:

    本节讲解了我们在Android开发中涉及到网络方面的要完成的工具,以及讲解了Http协议的 相关概念,相信大家对Android移动端与服务器交互已经有了个模糊的映像,下节我们来研究 Http协议的请求头与响应头!本节就到这里,谢谢~

    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    系统应用 Android
    相关文章 更多
    win10更新提示不断弹出如何永久关闭通知
    win10更新提示不断弹出如何永久关闭通知

    Windows 10更新提示频繁弹窗怎么办?本文详解如何通过Windows更新高级选项、系统通知设置及暂停更新功能,精准关闭不必要的重启提醒和横幅通知,同时确保系统安全更新不受影响。适用于家庭及个人用户,区分个人设置与企业策略管理。

    win10家庭版能不能取消开机密码,操作步骤是什么
    win10家庭版能不能取消开机密码,操作步骤是什么

    Win10家庭版如何取消开机密码?本文详解本地账户清空密码步骤及Microsoft账户自动登录设置方法,分析安全风险与例外情况,帮助用户在便捷与安全间做出合理选择。

    win10取消开机密码出现两个登录账户要怎么处理
    win10取消开机密码出现两个登录账户要怎么处理

    解决Win10取消开机密码后登录界面显示两个账户的问题。通过检查账户类型、重新配置netplwiz自动登录及清理多余用户,确保系统正常启动且数据安全。

    win10取消开机密码操作失败是什么原因怎么排查
    win10取消开机密码操作失败是什么原因怎么排查

    遇到Win10无法取消开机密码?可能是Microsoft账户限制、域策略禁止空密码或自动登录未同步。本文详解如何区分账户类型、检查本地安全策略,以及使用PIN码替代传统密码的快速登录方案。

    win10netplwiz没有勾选框该怎么取消开机密码
    win10netplwiz没有勾选框该怎么取消开机密码

    解决Win10运行netplwiz找不到“用户必须输入用户名和密码”勾选框的问题。通过关闭Windows Hello强制登录、检查账户类型及正确填写凭据,实现开机自动进入桌面。适用于个人电脑优化启动体验,注意区分自动登录与删除密码的安全差异。

    win10怎么取消开机密码新手完整操作教程
    win10怎么取消开机密码新手完整操作教程

    新手如何取消Win10开机密码?本文详解区分账户类型、清空本地密码及配置netplwiz自动登录的步骤,厘清PIN码与密码区别,提供安全可行的免密启动方案。

    win10关闭WindowsHello后如何取消开机密码
    win10关闭WindowsHello后如何取消开机密码

    Win10关闭Windows Hello后开机仍要密码?本文详解如何删除PIN码、设置netplwiz自动登录以及清空本地账户密码,解决开机免密登录问题。

    win10取消开机密码要不要关闭屏幕保护密码
    win10取消开机密码要不要关闭屏幕保护密码

    想取消Win10开机密码?先分清是启动登录还是屏保恢复。本文详解如何通过netplwiz设置自动登录,以及如何关闭屏幕保护恢复时的登录验证,同时保留睡眠唤醒的安全设置,确保操作准确且不影响电脑安全。

    win10微软账户如何取消开机密码直接进桌面
    win10微软账户如何取消开机密码直接进桌面

    想在Win10开机时跳过密码直接进入桌面?本文详解Microsoft账户下的PIN设置、本地账户切换及netplwiz自动登录配置,并区分开机验证与锁屏恢复设置,助你安全高效地优化登录体验。

    win10取消开机密码后,系统自动更新会重置设置吗?
    win10取消开机密码后,系统自动更新会重置设置吗?

    Win10系统更新后开机又要求输入密码?这通常不是密码被重置,而是自动登录设置或Windows Hello策略被更改。本文详解如何区分密码问题与登录配置问题,检查账户状态及组织策略,并安全恢复开机自动进入桌面的设置。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。