当前位置: 首页 > news >正文

App通信:HTTP与JSON全解析

App 与后端服务器通信方法简介

通信方法简介

很多朋友会问,App 客户端如何与服务器端进行通信呢?格式是什么?场景有那些?本小节将着重解答这些问题。

当前手机 App 客户端与服务器端通信,通常有两种模式:一种是短连接,一般通过 HTTP 进行通信;第二种是长连接,一般为 socket,长连接需要手机客户端与服务器端一直保持连接状态,服务器端压力较大,一般在游戏,服务器端主动向客户端推送服务信息时应用较为广泛。作为入门指南,本小册只讨论短连接 HTTP 的通信场景。而在短连接 HTTP 通信中,数据交互可以自定义,也可使用业界通用方法,即客户端和服务器端的数据交互采用 JSON 格式。本小册将使用业界通用方法,使用 JSON 的原因是 JSON 作为一种通用数据交换格式,被众多计算机语言支持,且开销小,省流量。

下面重点介绍一下 HTTP 和 JSON。

HTTP 与 JSON 简介

HTTP 协议

超文本传输协议(HTTP)是一个客户端和服务器端请求和应答的标准(TCP)。通过使用 App 客户端、Web 浏览器或者其他的工具,客户端发起一个到服务器上指定端口(默认端口为 80)的 HTTP 请求。 HTTP 有多种请求方式,而 App 客户端与服务器端的请求应答中,最常用的就是 GET 和 POST,本小册只会介绍这两种方式。如对其他方法感兴趣,可自行谷歌。

GET 方法

当发送一个 HTTP 请求时,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的,即入参暴露在请求 URL 中,如:
http://www.demo.com/test?name1=value1&name2=value2

GET 请求的特点
  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制
  • GET 请求只应当用于取回数据
POST 方法

当发送一个 HTTP 请求时,查询字符串(键/值对)是在 POST 请求的 HTTP 消息主体(body)中发送的,如:
http://www.demo.com/test
Request body 中:name1=value1&name2=value2

POST 请求的特点
  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求

对于第一次接触 HTTP 的同学,可能还是难以理解如何去使用它们,对吧?不要紧,上面的解释只是作为一种通用理解,刚入门的同学可以这样简单记忆:对安全性要求较高,或键/值对较多的,用 POST,其他的用 GET。后面从第 6 小节起,将介绍如何去使用 GET/POST 方法。

JSON

JSON 是一种轻量级的数据交换格式,易于阅读并能提升网络传输效率。JSON 的语法中,键/值对是用来保存对象的一种方式,如
{"name1": "value1"}
对于熟悉 Python 的同学来讲,JSON 的格式和 Python 的字典很像。简单地理解,Python 的字典数据格式就是 JSON 的数据格式,但它们的不同也显而易见。JSON 的键/值对只允许使用双引号("")作为边界符号,而 Python 的字典则可以使用多种方式,包括单引号。

小结

本小节重点介绍了 App 客户端与服务器端的通信场景,包括数据交互方式,及 HTTP 和 JSON 的介绍,简单小结如下:
1. App 客户端与服务器端的消息请求应答使用 HTTP 协议;
2. App 客户端与服务器端的消息格式使用 JSON 格式;
3. HTTP 的重点请求方式有两种方式,分别为 GET 和 POST;
4. GET/POST 采用键/值对的方式,信息保密性要求高些,或键/值对多些时,使用 POST 方式。

http://www.dtcms.com/a/569193.html

相关文章:

  • 网站推广什么意思资料网站怎么做的
  • win10本地部署weknora记录
  • 7、webgl 基本概念 + 前置数学知识点(向量 + 矩阵)
  • 寻花问柳专做男人的网站高端网站建设设计公司哪家好
  • Rust开发实战之RESTful API客户端开发
  • C++ 锁类型大全详解
  • 智慧园区:智能管理赋能未来发展新生态
  • 潮州 网站建设个人静态网站首页怎么做
  • 东莞网站建站推广wordpress导入演示数据
  • socket_udp
  • 基于单片机的智能家居窗帘控制系统设计(论文+源码)
  • Nestjs框架: 微服务架构拆分原则与实战指南
  • WinSCP的简单使用与SFTP自动备份 .bat脚本
  • iOS 虚拟位置设置实战,多工具协同打造精准调试与场景模拟环境
  • Qt 全球峰会 2025:中国站速递 —— 技术中立,拥抱更大生态
  • Android集成Unity避坑指南
  • 我的网站设计联盟网站推广营销应该怎么做
  • 从零开始刷算法-栈-括号匹配
  • 走进Linux的世界:初识进程(Task)
  • 首钢建设集团山东公司网站2017年网站建设公司
  • 让数据库更智能-大模型如何优化我们的SQL查询
  • 什么程序做网站容易优化apache和wordpress
  • NLP自然语言处理Bert大模型系列学习
  • 数据科学每日总结--Day10--数据库
  • 【实战】自然语言处理--长文本分类(3)HAN算法
  • 中国建设工程招投网站网站后台登陆口
  • 学校网站建设招聘电商推广计划
  • Ubuntu 20.04 系统库管理详细教程
  • [jmeter-商城测试]
  • Kubernetes包管理利器:Helm核心功能与架构解析指南