android开发之http协议

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

HTTP是HyperTextTransferProtocol(超文本传输协议)的缩写。它的发展是万维网协会(WorldWideWebConsortium)和Internet工作小组IETF(InternetEngineeringTaskForce)合作的结果,(他们)最终发布了一系列的RFC,RFC1945定义了HTTP/1.0版本。其中最著名的就是RFC2616。RFC2616定义了今天普遍使用的一个版本——HTTP1.1。

HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

默认HTTP的端口号为80,HTTPS的端口号为443。

这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

图1设置Capture选项

图2选择CaptureFilter

图3抓包

在上图中,可清晰的看到客户端浏览器(ip为192.168.2.33)与服务器的交互过程:

1)No1:浏览器(192.168.2.33)向服务器(220.181.50.118)发出连接请求。此为TCP三次握手第一步,此时从图中可以看出,为SYN,seq:X(x=0)

2)No2:服务器(220.181.50.118)回应了浏览器(192.168.2.33)的请求,并要求确认,此时为:SYN,ACK,此时seq:y(y为0),ACK:x+1(为1)。此为三次握手的第二步;

3)No3:浏览器(192.168.2.33)回应了服务器(220.181.50.118)的确认,连接成功。为:ACK,此时seq:x+1(为1),ACK:y+1(为1)。此为三次握手的第三步;

4)No4:浏览器(192.168.2.33)发出一个页面HTTP请求;

5)No5:服务器(220.181.50.118)确认;

6)No6:服务器(220.181.50.118)发送数据;

7)No7:客户端浏览器(192.168.2.33)确认;

8)No14:客户端(192.168.2.33)发出一个图片HTTP请求;

9)No15:服务器(220.181.50.118)发送状态响应码200OK

……

每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。

User-Agent头域的内容包含发出请求的用户信息。

Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。

一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。

HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连接传输。

一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号。

一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。

由URI标识的网络数据对象或服务。

数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。

一个为发送请求目的而建立连接的应用程序。

初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。

一个接受连接并对请求返回信息的应用程序。

是一个给定资源可以在其上驻留或被创建的服务器。

一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。

代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。

一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。

网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。

是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。

反应信息的局域存储。

《分析TCP的三次握手》:

《使用Wireshark来检测一次HTTP连接过程》:

RFC1945定义了HTTP/1.0版本,RFC2616定义了HTTP/1.1版本。

笔者在blog上提供了这两个RFC中文版的下载地址。

RFC1945下载地址:

RFC2616下载地址:

HTTP/1.0每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用。优点是减少重复进行TCP三次握手的开销,提高效率。

注意:在同一个TCP连接中,新的请求需要等上次请求收到响应后,才能发送。

HTTP1.1在Request消息头里头多了一个Host域,HTTP1.0则没有这个域。

Eg:

可能HTTP1.0的时候认为,建立TCP连接的时候已经指定了IP地址,这个IP地址上只有一个host。

(接收方向)

无论是HTTP1.0还是HTTP1.1,都要能解析下面三种date/timestamp:

(发送方向)

HTTP1.0要求不能生成第三种asctime格式的date/timestamp;

HTTP1.1则要求只生成RFC1123(第一种)格式的date/timestamp。

状态响应码100(Continue)状态代码的使用,允许客户端在发request消息body之前先用requestheader试探一下server,看server要不要接收requestbody,再决定要不要发requestbody。

客户端在Request头部中包含

Server看到之后呢如果回100(Continue)这个状态代码,客户端就继续发requestbody。这个是HTTP1.1才有的。

另外在HTTP/1.1中还增加了101、203、205等等性状态响应码

HTTP1.1增加了OPTIONS,PUT,DELETE,TRACE,CONNECT这些Request方法.

Method="OPTIONS";Section9.2

|"GET";Section9.3

|"HEAD";Section9.4

|"POST";Section9.5

|"PUT";Section9.6

|"DELETE";Section9.7

|"TRACE";Section9.8

|"CONNECT";Section9.9

|extension-method

extension-method=token

请求消息格式如下所示:

请求行

通用信息头|请求头|实体头

CRLF(回车换行)

实体内容

其中“请求行”为:请求行=方法[空格]请求URI[空格]版本号[回车换行]

请求行实例:

Eg1:

Eg2:

HTTP请求消息实例:

HTTP的请求方法包括如下几种:

GET

POST

HEAD

PUT

DELETE

OPTIONS

TRACE

CONNECT

HTTP响应消息的格式如下所示:

状态行

通用信息头|响应头|实体头

CRLF

其中:状态行=版本号[空格]状态码[空格]原因[回车换行]

状态行举例:

HTTP响应消息实例如下所示:

100——客户必须继续发出请求

101——客户要求服务器根据请求转换HTTP协议版本

200——交易成功201——提示知道新文件的URL

202——接受和处理、但处理未完成

203——返回信息不确定或不完整

204——请求收到,但返回信息为空

205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

206——服务器已经完成了部分用户的GET请求

300——请求的资源可在多处得到

301——删除请求数据

302——在其他地址发现了请求数据

303——建议客户访问其他URL或访问方式

304——客户端已经执行了GET,但文件未变化

305——请求的资源必须从服务器指定的地址得到

306——前一版本HTTP中使用的代码,现行版本中不再使用

307——申明请求的资源临时性删除

400——错误请求,如语法错误

HTTP401.3-ACL禁止访问资源

402——保留有效ChargeTo头响应

403——禁止访问

HTTP403.1禁止访问:禁止可执行访问

HTTP403.2-禁止访问:禁止读访问

HTTP403.3-禁止访问:禁止写访问

HTTP403.4-禁止访问:要求SSL

HTTP403.5-禁止访问:要求SSL128

HTTP403.6-禁止访问:IP地址被拒绝

HTTP403.7-禁止访问:要求客户证书

HTTP403.8-禁止访问:禁止站点访问

HTTP403.9-禁止访问:连接的用户过多

HTTP403.10-禁止访问:配置无效

HTTP403.11-禁止访问:密码更改

HTTP403.12-禁止访问:映射器拒绝访问

HTTP403.13-禁止访问:客户证书已被吊销

HTTP403.15-禁止访问:客户访问许可过多

HTTP403.16-禁止访问:客户证书不可信或者无效

HTTP403.17-禁止访问:客户证书已经到期或者尚未生效

404——没有发现文件、查询或URl

405——用户在Request-Line字段定义的方法不允许

406——根据用户发送的Accept拖,请求资源不可访问

409——对当前资源状态,请求不能完成

410——服务器上不再有此资源且无进一步的参考地址

411——服务器拒绝用户定义的Content-Length属性请求

412——一个或多个请求头字段在当前请求中错误

413——请求的资源大于服务器允许的大小

414——请求的资源URL长于服务器允许的长度

415——请求资源不支持请求项目格式

416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

HTTP500-内部服务器错误

HTTP500.100-内部服务器错误-ASP错误

HTTP500-11服务器关闭

HTTP500-12应用程序重新启动

HTTP500-13-服务器太忙

HTTP500-14-应用程序无效

HTTP500-15-不允许请求global.asa

Error501-未实现

HTTP502-网关错误

输入cmd进入命令窗口,在命令行键入如下命令后按回车:

而后在窗口中按下“Ctrl+]”后按回车可让返回结果回显。

接着开始发请求消息,例如发送如下请求消息请求baidu的首页消息,使用的HTTP协议为HTTP/1.1:

注意:copy如上的消息到命令窗口后需要按两个回车换行才能得到响应的消息,第一个回车换行是在命令后键入回车换行,是HTTP协议要求的。第二个是确认输入,发送请求。

可看到,当采用HTTP/1.1时,连接不是在请求结束后就断开的。若采用HTTP1.0,在命令窗口键入:

此时可以看到请求结束之后马上断开。

读者还可以尝试在使用GET或POST等时,带上头域信息,例如键入如下信息:

2.5常用的请求方式

常用的请求方式是GET和POST.

lGET方式:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。

lPOST方式:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能:

1:对现有资源的解释;

2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息;

3:提交数据块;

从上面描述可以看出,Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中。

GET与POST方法有以下区别:

(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTMLHEADER内提交。

(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

(3)安全性问题。正如在(1)中提到,使用Get的时候,参数会显示在地址栏上,而Post不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。

HTTP最常见的请求头如下:

lAccept:浏览器可接受的MIME类型;

lAccept-Charset:浏览器可接受的字符集;

lAccept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到;

lContent-Length:表示请求消息正文的长度;

lCookie:这是最重要的请求头信息之一;

lFrom:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它;

lHost:初始URL中的主机和端口;

lIf-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“NotModified”应答;

lPragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝;

lReferer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

lUser-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用;

lUA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

HTTP最常见的响应头如下所示:

lAllow:服务器支持哪些请求方法(如GET、POST等);

lContent-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入ByteArrayOutputStram,完成后查看其大小,然后把该值放入Content-Length头,最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容;

lContent-Type:表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentTyep。可在web.xml文件中配置扩展名和MIME类型的对应关系;

lExpires:指明应该在什么时候认为文档已经过期,从而不再缓存它。

lLocation:表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302;

lAllow:GET,POST

lContent-Encoding:文档的编码(Encode)方法,例如:gzip,见“2.5响应头”;

lContent-Language:内容的语言类型,例如:zh-cn;

lContent-Length:表示内容长度,eg:80,可参考“2.5响应头”;

lContent-MD5:MD5实体的一种MD5摘要,用作校验和。发送方和接受方都计算MD5摘要,接受方将其计算的值与此头标中传递的值进行比较。Eg1:Content-MD5:。Eg2:dfdfdfdfdfdfdff==;

lContent-Range:随部分实体一同发送;标明被插入字节的低位与高位字节偏移,也标明此实体的总长度。Eg1:Content-Range:1001-2000/5000,eg2:bytes2543-4532/7898

lContent-Type:标明发送或者接收的实体的MIME类型。Eg:text/html;charset=GB2312主类型/子类型;

lExpires:为0证明不缓存;

在HTTP消息中,也可以使用一些再HTTP1.1正式规范里没有定义的头字段,这些头字段统称为自定义的HTTP头或者扩展头,他们通常被当作是一种实体头处理。

现在流行的浏览器实际上都支持Cookie,Set-Cookie,Refresh和Content-Disposition等几个常用的扩展头字段。

lContent-Disposition:头字段,可参考“2.5响应头”;

lContent-Type:WEB服务器告诉浏览器自己响应的对象的类型。

eg1:Content-Type:application/xml;

eg2:applicaiton/octet-stream;

Content-Disposition:attachment;filename=aaa.zip。附录:参考资料

《HTTP1.1和HTTP1.0的区别》:

《HTTP请求(GET和POST区别)和响应》:

《HTTP请求头概述_百度知道》:

《实体头和扩展头》:

Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力。

Session可以用Cookie来实现,也可以用URL回写的机制来实现。用Cookie来实现的Session可以认为是对Cookie更高级的应用。

Cookie和Session有以下明显的不同点:

1)Cookie将状态保存在客户端,Session将状态保存在服务器端;

2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定义;

3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;

4)就安全性来说:当你访问一个使用session的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。

Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

服务器给每个Session分配一个唯一的JSESSIONID,并通过Cookie发送给客户端。

当客户端发起新的请求的时候,将在Cookie头中携带这个JSESSIONID。这样服务器能够找到这个客户端对应的Session。

URL回写是指服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参数,这样客户端点击任何一个链接都会把JSESSIONID带会服务器。

如果直接在浏览器输入服务端资源的url来请求该资源,那么Session是匹配不到的。

Tomcat对Session的实现,是一开始同时使用Cookie和URL回写机制,如果发现客户端支持Cookie,就继续使用Cookie,停止使用URL回写。如果发现Cookie被禁用,就一直使用URL回写。jsp开发处理到Session的时候,对页面中的链接记得使用response.encodeURL()。

30//单位:分钟

2)使用session.invalidate()明确的去掉Session。

1)Cookie:客户端将服务器设置的Cookie返回到服务器;

2)Set-Cookie:服务器向客户端设置Cookie;

3)Cookie2(RFC2965)):客户端指示服务器支持Cookie的版本;

4)Set-Cookie2(RFC2965):服务器向客户端设置Cookie。

服务器在响应消息中用Set-Cookie头将Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在Cookie头中发送给服务器。从而实现会话的保持。

WEB缓存(cache)位于Web服务器和客户端之间。

缓存会根据请求保存输出内容的副本,例如html页面,图片,文件,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。

q减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快。

q减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。

qCache-Control:更细致的控制缓存的内容

qETag:响应中资源的校验值,在服务器上某个时段是唯一标识的。

qIf-None-Match:客户端存取的该资源的检验值,同ETag。

HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。

HTTP定义了3种缓存机制:

2)Validation:用来检查以一个缓存的回应是否仍然可用。例如,如果一个回应有一个Last-Modified回应头,缓存能够使用If-Modified-Since来判断是否已改变,以便判断根据情况发送请求;

3)Invalidation:在另一个请求通过缓存的时候,常常有一个副作用。例如,如果一个URL关联到一个缓存回应,但是其后跟着POST、PUT和DELETE的请求的话,缓存就会过期。

qHTTP协议的GET方法,支持只请求某个资源的某一部分;

q206PartialContent部分内容响应;

qRange请求的资源范围;

qContent-Range响应的资源范围;

q在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资源,来实现断点续传。

分块请求资源实例:

Eg1:Range:bytes=306302-:请求这个资源从306302个字节到末尾的部分;

Eg2:Content-Range:bytes306302-604047/604048:响应中指示携带的是该资源的第306302-604047的字节,该资源共604048个字节;

客户端通过并发的请求相同资源的不同片段,来实现对某个资源的并发分块下载。从而达到快速下载的目的。目前流行的FlashGet和迅雷基本都是这个原理。

多线程下载的原理:

q下载工具开启多个发出HTTP请求的线程;

q合并每个线程下载的文件。

HTTPS(全称:HypertextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。

1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;

2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

1)客户端产生的密钥只有客户端和服务器端能得到;

2)加密的数据只有客户端和服务器端才能得到明文;

3)客户端到服务端的通信是安全的。

代理服务器英文全称是ProxyServer,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。

代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

更重要的是:ProxyServer(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。

主要功能如下:

1)突破自身IP访问限制,访问国外站点。如:教育网、169网等网络用户可以通过代理访问国外网站;

2)访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务;

3)突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国外的代理服务器试试;

4)提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度;

5)隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。

虚拟主机是用同一个WEB服务器,为不同域名网站提供服务的技术。Apache、Tomcat等均可通过配置实现这个功能。

客户端发送HTTP请求的时候,会携带Host头,Host头记录的是客户端输入的域名。这样服务器可以根据Host头确认客户要访问的是哪一个域名。

THE END
1.RawResponse的用法与含义mob64ca140b466e的技术博客1. 我们知道,在Android中,如果执行耗时操作,一定不能在主线程中执行,而且更新UI界面又必须在在主线程中操作。 2. 如果耗时操作比较多,很多人一般情况下就会开启很多子线程去执行耗时任务,所以这样一来,这就给系统带来非常大的负担,随之而来就影响了整个系统和整个App的性能。 https://blog.51cto.com/u_16213662/12892024
2.深入解析,历年12月14日安卓开发实时判断要点详解在竞争激烈的移动应用市场中,性能优化和用户体验成为了决定应用成功与否的关键因素,往年12月14日的安卓开发领域,开发者们致力于提高应用的响应速度、降低资源消耗、改善界面设计等方面,以提升用户体验。 为了实现性能优化,开发者需要实时关注各种性能分析工具的使用,通过监控应用的内存使用、CPU消耗、网络请求等方面,找出性http://www.xuelai.net/post/42954.html
3.androidANR产生原因和解决办法腾讯云开发者社区ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在https://cloud.tencent.com/developer/article/2477342
4.HarmonyOSAPP性能优化之提升应用响应速度应用对用户的输入需要快速反馈,以提升交互体验,因此本文提供了以下方法来提升应用响应速度。 避免主线程被非UI任务阻塞 减少组件刷新的数量 避免主线程被非UI任务阻塞 在应用响应用户输入期间,应用主线程应尽可能只执行UI任务(待显示数据的准备、可见视图组件的更新等),非UI的耗时任务(长时间加载的内容等)建议通过异步https://www.jianshu.com/p/0b48af6f736c
5.androidliveeventbus怎样保证实时性问答Android LiveEventBus 是一个用于在组件之间传递事件的库,它可以帮助你实现组件间的解耦和通信。要保证 LiveEventBus 的实时性,可以采取以下措施: 使用然而,需要注意的是,LiveEventBus 并不是一个万能的解决方案,对于非常复杂的应用场景,可能需要考虑使用其他通信机制,如 RxJava、Kotlin 协程等。 0 赞 0 https://www.yisu.com/ask/98554862.html
6.[嵌入式系统14]:常见实时嵌入式操作系统比较:RT快速响应:实时嵌入式操作系统能够迅速响应外部事件或任务请求,以满足实时任务的时间要求。 稳定性和可靠性:实时嵌入式操作系统要求系统能够在各种环境条件下稳定可靠地运行,并在不可避免的故障情况下提供适当的错误处理机制。 硬实时和软实时支持:实时嵌入式操作系统通常提供对硬实时(Hard Real-Time)任务和软实时(Soft http://www.wjks.cn/news/91358.html
7.android触摸响应传递机制安卓手机触控响应机制android触摸响应传递机制 android 传递机制: 本文背景:前些天做广告用viewpager,但是又要禁止它的手触摸滑动。有的人可能会说我都不要它滑动了,那还用什么viewpagwr,但是我还是用了,我就做禁止它滑动吧,但是在搜索之后知道有三个函数都可以用, OnTouchEvent,dispatchTouchEvent、onInterceptTouchEventhttps://blog.csdn.net/ddxxii/article/details/50477426
8.隐私政策我们收集这些信息是为了调查事实与帮助您解决问题,如您拒绝提供可能导致您无法使用我们的客服等用户响应机制。 (九)保障账号安全功能 我们需要收集您的一些信息来保障您使用我们的产品与/或服务时的账号与系统安全,并协助提升我们的产品与/服务的安全性和可靠性,以防产生任何危害用户、答题赚钱、社会的行为,包括:您的https://cftweb.3g.qq.com/privacy/privacyPolicy?content_id=1a0c37208f5bd93dd68a56a17b19993e
9.Android进阶事件分发机制解决事件冲突Android1 Android 事件分发机制这是一个老生常谈的问题,相信伙伴们都了解常见的Android事件类型:ACTION_DOWN、ACTION_MOVE、ACTION_UP,分别代表手指按下屏幕的事件、手指滑动的事件以及手指抬起的事件,那么从手指按下到事件响应,中间经历了什么呢?我们从Google的源码中去寻找答案。https://www.jb51.net/article/273593.htm
10.测试工程师常见面试题app性能测试--性能监控器(实时查看),长时间查看:打开性能监控面板,导出trace工具,借助开发者工具中的trace查看 微信小程序自动兼容ios和android手机,屏幕适配(分辨率/机型/版本)小程序自带调试系统, 十,请说明Android手机和IOS手机,系统有什么区别? 运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。http://it.en369.cn/jiaocheng/1725918329a577201.html
11.管理系统平台(精选十篇)移动端采用scoket机制与web service提供的服务端口连接,进行访问。 5总结与展望 本系统针对当今时代各高校实验教学管理中出现的问题,通过ASP.NET和android作为主要技术路线,利用指纹识别、图像采集和网络通信等手段完成了以客户端、移动端和网页端三大平台相结合的基于指纹识别的多平台实验管理程序。它实现了门禁管理、学生https://www.360wenmi.com/f/cnkey19euf99.html
12.应用权限申请与使用情况说明为了保障软件与服务的安全运行,我们会收集操作系统版本号、设备标识信息(IMEI/MAC/AndroidID/OAID/IDFA我们会使用加密技术确保数据的保密性;我们会使用受信赖的保护机制防止数据遭到恶意攻击;我们会部署访问(6)若我们决定响应您的删除请求,我们还将同时通知从我们处获得您个人信息的实体,要求其及时删除,除非https://www.waijiao365.cn/privacy
13.福建信息职业技术学院计算机系数字工场产教融合人才培养基地建设根据财库〔2017〕141号规定,符合条件的残疾人福利性单位在参加政府采购活动时,视同小型、微型企业,享受促进中小企业发展的政府采购政策,残疾人福利性单位须在投标响应文件中提供《残疾人福利性单位声明函》,否则不予认定。信用记录,按照下列规定执行:(根据财库〔2016〕125号文件规定,供应商不得被列入失信被执行人、https://zfcg.czt.fujian.gov.cn/upload/document/20200727/cbea3a5cd9d54dc79592bd70bc7aa487.html
14.关于Android和iOS流畅度的一切五、系统与运行机制层面 (一)内核 1、又要开始拿 Linux 和 Unix 说事了,但很不幸的是,流畅这件事跟系统内核一点关系都没有。 2、说个老梗: iOS 基于 Unix 所以是 Touch(响应触摸操作)——Media——Service——Core 架构 Android 基于 Linux 所以是 Application——Framework——Library(包含了响应触摸操作的显https://weibo.com/p/1001603901597414459262
15.隐私政策我们通过信息接触者保密协议、监控和审计机制来对数据进行全面安全控制。 加强安全意识。我们还会举办安全和隐私保护培训课程,加强员工对于保护信息重要性的认识使用场景:语音输入法、语音搜索、智能语音对话、会议实时字幕等 收集方式:SDK自行采集 隐私政策链接:隐私政策 推送SDK(Android 端) https://jspp.com/help/privacy.html
16.SDK隐私声明Android分析服务错误与异常机制 通过AppAuth接入华为帐号 通过AppAuth接入华为帐号(Android) 通过AppAuth接入华为帐号(iOS) 设置回调地址 华为帐号登录图标使用规范 Health Service Kit Android SDK接口调用示例 实时运动Bundle对象键值 基础能力支持的国家/地区 扩展能力支持的国家/地区 设备接入 说明 运动设备接入开发https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-sdk-data-security-0000001050745153