APP连接服务器所涉及的网络知识
一、人们如何连接服务器与客户端?
1.使用HTTP协议去连接服务器与客户端
我们把资源放在服务器里(也就是你电脑中的一个文件夹),此时这个文件就会有一个它自己的名字(比如:192.168.199.3:80/fuck.txt,"192.168.199.3"是你主机的ip地址————当然一般不会是内网地址)
客户端,通过程序,比如安卓使用HttpUrlConnection类,用该资源的名字(192.168.199.3:80/fuck.txt)作为输入参数,发起HTTP请求,然后再用HttpUrlConnection类的接收HTTP响应的方法把服务器返回的资源接收,就可以实现前端与后端的互联了。
2.什么叫客户端,什么叫服务器端?
请求资源的一端称为客户端,提供资源的一端称为服务器端。
3.HTTP可以传什么?
答:HTTP什么都可以传。(别以为HTTP只能传输HTML)
4.举例
(1)客户端是浏览器,则传的是HTML。(及其他资源,如CSS、JavaScript、图片、音频、视频、其他一切格式的文件)
(2)客户端是APP,则传的是JSON或XML。(及其他资源,如图片、音频、视频、其他一切格式的文件)
二、了解HTTP
1.整体流程
(1)客户端想浏览http://www.fuck.com/
(2)客户端将http://www.fuck.com/发送给DNS服务器
(3)DNS服务器告诉客户端http://www.fuck.com/对应的IP是:201.96.114.112
(4)客户端的HTTP协议:生成针对目标Web服务器的“HTTP请求报文”
(5)客户端的TCP协议:将“HTTP请求报文”分割成“报文段”并表上序号,把每个“报文段”准确无误的传给服务器(实现准确的方式:三次握手)
(6)客户端的IP协议:搜索对方的地址,一边路由一边传送“报文段”
(7)服务器端的TCP协议:根据序号重组“报文段”,组成“HTTP请求报文”
(8)服务器端的HTTP协议:处理“HTTP请求报文”,将其中请求的资源,生成“HTTP响应报文”传回去
2.请求报文和响应报文
(1)请求报文由五个部分构成:
请求方法:如GET、POST、DELETE
请求URI :如http://127.0.0.1/fuck.txt
协议版本:如HTTP/1.1或HTTP/2.0
首部字段:(还请自行查询,我不了解首部字段)
内容实体:如登陆时提交的用户名、密码
(2)响应报文由五个部分组成:
协议版本:如HTTP/1.1或HTTP/2.0
状态码:如404
原因段语:如OK
首部字段:(请自行查询,我不了解首部字段)
实体主体:如一个HTML文件或一个图片文件
(有的水友要问了,枫哥枫哥,图片怎么用字符串表示呢?我说你们真是too young,二进制呀兄弟)
3.Cookie是什么?
(1)首先,先看个例子:
例:HTTP无法让用户保持登陆,因为HTTP是一个不保存状态的协议。

(2)解决方案:使用Cookie帮助HTTP。
(3)具体过程:
①客户端第一次向服务器发送请求,服务器会为该客户端生成一个新的Cookie存好。
②之后服务器会通过set-Cookie指令把Cookie发给客户端保存。
③当客户端第二次请求时,将保存好的Cookie也一并发给服务器。
④服务器接到请求后,一查这Cookie对应的客户端信息,就知道这个客户端是谁了。
4.HTTP方法
(1)GET:请求已被URI识别的资源。指定的资源通过服务器端解析之后返回响应内容。也就是说,如果请求的是文本,那就保持原样返回。如果请求的是程序,则返回经过执行后的输出结果。
(2)POST:传一些数据到服务器端(如用户名和密码),让服务器端对这些数据进行解析并返回结果。
(3)PUT:传输文件。在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
(4)HEAD:获得报文首部。HEAD和GET一样,只是不反回报文主体部分。用于确认资源更新时间及URI的有效性等。
(5)DELETE:删除文件。DELETE方法按照请求URI删除指定的资源。
(6)OPTIONS:询问支持的方法。服务器端返回的是:GET,POST,HEAD(返回服务器支持的方法)
(7)TRACE:追踪路径。
(8)CONNECT:用隧道协议连接代理。使用SSL协议和TLS协议把通信内容加密后经网络隧道传输。
(注意:方法名区分大小写,需要都用大写字母。)
5.传输前要先压缩——内容编码
服务器对要发送的内容进行内容编码(也就是压缩),之后进行传输,客户端则负责解码。
常见的内容编码有以下几种:
gzip
compress
deflate
identity
6.缓存,隧道
(1)缓存
会将资源保存一份在代理服务器上(或者本地浏览器中),当代理服务器再次接到相同资源的请求(或本地浏览器检测到了又请求了同样的资源),就不向源服务器申请资源,而是直接传送回去代理服务器上的资源(或直接显示本地中的资源)。
(2)缓存的问题
问题:源服务器上的资源更新了,缓存服务器上的资源没及时的随着更新。这样用户就会得到过期的资源。
解决方法:设立缓存有效期,若有效期到期了则去源服务器那里下载最新的资源。客户端也可以主动请求不使用缓存,而是去源服务器那里下载最新的资源。
(3)隧道
使用SSL等加密手段进行通信,目的是安全
7.静态页面和动态页面
事先准备好的叫静态页面
现由程序生成的叫动态页面
8.CGI
CGI是指Web服务器在接收到客户端发送过来的请求后,转发给服务器端的程序的一组机制。
使用CGI的程序叫CGI程序,通常由PHP、Python、Java等编程语言编写。
三、APP连接服务器的“解决方案”大全
1.最基本的模型:直接用HTTP协议进行传输

服务器端针对不同的GET请求,POST请求等方法写一些程序。(即我们说的API)
客户端(比如Android端)找一个能发送HTTP请求、能接收HTTP响应的类。
用这个类发送HTTP请求给服务器。(调用API)
2.Web Service模型:2017年,基于HTTP协议的解决方案们
从大体上说,一共有三类,即:
(1)SOA模型 (面向消息)
(2)RPC模型 (面向方法)
(3)REST模型 (面向资源)
其中RPC模型,又分为三类:
①XML-RPC
②JSON-RPC
③SOAP+WSDL [SOAP本质上是XML-RPC的升级版]
3.一些常见问题
问:Android端通过什么向后端发数据呢?
答:
①HttpUrlConnection————HTTP协议传输的最靠谱选择,推荐:选HTTP协议的就用它吧
②HttpClient————不如HttpUrlConnection好用
③OkHttp————被HttpUrlConnection当做底层实现部分了,可以自动处理常见网络问题
④volley————适用于通信频繁的小数据网络操作,但不适合大数据的网络操作如下载文件
⑤Retrofit————基于REST模型的框架,其底层是OkHttp。推荐:选REST模型的就用它吧
⑥AsyncHttpClient————底层是HttpClient写的,没有OkHttp的自动错误处理常见网络问题的能力
4.个人Android技术选型
前端:Retrofit
中间:HTTP+JSON+REST
后端:Flask+Python+MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)