小标
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号