JAVA语言Web开发中的Http请求实例说明
小标 2018-12-04 来源 : 阅读 1285 评论 0

摘要:本文主要向大家介绍了JAVA语言Web开发中的Http请求实例说明,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言Web开发中的Http请求实例说明,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


B/S网络的核心架构是HTTP。发送一个HTTP请求简单点说就是建立一个浏览器端(Browser)和服务器端(Server)之间的Socket通信过程。浏览器在建立socket链接之前,根据地址栏输入的URL的域名DNS解析出IP地址,根据这个IP地址和默认的端口号80与远程服务器建立socket连接,浏览器根据URL组成一个get类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,最后断开连接。


HTTP请求的本质就是建立一个socket连接,可以有很多方式模拟实现,比如可以用HttpClient模拟浏览器来发起请求。在linux环境下,通过 curl+URL就可以简单的发送一个HTTP请求。例如:


curl "wwww.baidu.com"


在linux环境下会出现如图1的HTML数据,如果在命令行加上 -I ,那么可以查看到这次访问的header信息,如图2所示。



图1 HTML页面



图2 Header信息


HTTP Header控制着用户浏览器的渲染行为和服务器的执行逻辑。


1.常见的请求头及其说明


Accept这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值image/png或image/jpeg是最常见的两种可能值。
Accept-Charset这个头信息指定浏览器可以用来显示信息的字符集。例如 ISO-8859-1。
Accept-Encoding这个头信息指定浏览器知道如何处理的编码类型。值gzip或compress是最常见的两种可能值。
Accept-Language这个头信息指定客户端的首选语言,在这种情况下,Servlet 会产生多种语言的结果。例如,en、en-us、ru 等。
Authorization这个头信息用于客户端在访问受密码保护的网页时识别自己的身份。
Connection这个头信息指示客户端是否可以处理持久 HTTP 连接。持久连接允许客户端或其他浏览器通过单个请求来检索多个文件。值Keep-Alive意味着使用了持续连接。
Content-Length这个头信息只适用于 POST 请求,并给出 POST 数据的大小(以字节为单位)。
Cookie这个头信息把之前发送到浏览器的 cookies 返回到服务器。
Host这个头信息指定原始的 URL 中的主机和端口。
If-Modified-Since这个头信息表示只有当页面在指定的日期后已更改时,客户端想要的页面。如果没有新的结果可以使用,服务器会发送一个 304 代码,表示Not Modified头信息。
If-Unmodified-Since这个头信息是 If-Modified-Since 的对立面,它指定只有当文档早于指定日期时,操作才会成功。
Referer这个头信息指示所指向的 Web 页的 URL。例如,如果您在网页 1,点击一个链接到网页 2,当浏览器请求网页 2 时,网页 1 的 URL 就会包含在 Referer 头信息中。
User-Agent这个头信息识别发出请求的浏览器或其他客户端,并可以向不同类型的浏览器返回不同的内容。


2 常见的响应头及其说明


1)Age:当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到现在经过多长时间了。

2)Accept-Ranges:WEB服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)的请求。bytes:表示接受,none:表示不接受。

3) Cache-Control:服务器应遵循的缓存机制。

 public(可以用 Cached 内容回应任何用户)

 private(只能用缓存内容回应先前请求该内容的那个用户)

 no-cache(可以缓存,但是只有在跟WEB服务器验证了其有效后,才能返回给客户端) 

 max-age:(本响应包含的对象的过期时间)  

 ALL:  no-store(不允许缓存)  

4) Connection: 是否需要持久连接

 close(连接已经关闭)。

 keepalive(连接保持着,在等待本次连接的后续请求)。

 Keep-Alive:如果浏览器请求保持连接,则该头部表明希望 WEB 服务器保持连接多长时间(秒)。例如:Keep-Alive:300

5)Content-Encoding:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。 例如:Content-Encoding:gzip 

6)Content-Language:WEB 服务器告诉浏览器自己响应的对象的语言。

7)Content-Length:WEB 服务器告诉浏览器自己响应的对象的长度。例如:Content-Length: 26012

8)Content-Range:WEB 服务器表明该响应包含的部分对象为整个对象的哪个部分。例如:Content-Range: bytes 21010-47021/47022

9)Content-Type:WEB 服务器告诉浏览器自己响应的对象的类型。例如:Content-Type:application/xml

10)Expired:WEB服务器表明该实体将在什么时候过期,对于过期了的对象,只有在跟WEB服务器验证了其有效性后,才能用来响应客户请求。

11) Last-Modified:WEB 服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间等等。

12) Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取。

13)Proxy-Authenticate: 代理服务器响应浏览器,要求其提供代理身份验证信息。

14)Server: WEB 服务器表明自己是什么软件及版本等信息。

15)Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。

   


3 浏览器缓存机制。


浏览器的缓存有时候会影响页面的展示。通常可以用ctrl+F5组合件重新请求一次这个页面。因为重新请求的时候,会携带一些额外的请求头:


chche_Contorl : max-age =  


这个意思是缓存的内容将在xx秒后失效,这个选项只能在http1.1中可以用。在http1.0中,重新请求会携带另外两个请求头:


pragma: no_cache


Cache-Control : no_cache


Cache_Control请求字段被各个浏览器支持的很好,而且优先级比较高。Pragma字段的作用和Cache_Control类似,也是在请求头中包含特殊的指令,使相关的服务器遵守该指令。


Expires的通常使用格式是:Expries :Sat ,25 Feb 2012 12:22:17 GMT,后面跟着是日期和时间,如果超过这个时间,缓存的内容将会失效。


Last-Modified一般用于服务器上的资源的最后的修改时间。资源可以是静态(静态资源自动加上这字段),或者动态的内容(Servlet提供了一个getlastModified的方法用于检查某个动态内容是否已经更新),通过这个最后修改时间可以判断当前的请求的资源是否是最新的。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved