HTTP相关知识

          Http请求当请求超时时底层会默认进行重发,默认重发次数为3次,在某些情况下为了防止重复的请求,需要将自动重发覆盖。

所以当我们为满足某种需求只需要Http发出一次请求的时候需要设置:httpClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0,false));


HTTP生命周期解释,简单来说:当jsp发出请求时,表明request生命周期的开始,请求结束,表明表明request生命周期的结束。

当从一个JSP发出一个request,表明request周期的开始,当到达action之后一般有两种处理request的方式,一种为request.getDispatcher.forward,一种是response.sendRedirect。

对于request的forward,该request的生命周期将会继续延续下去,当采用forward如果到达JSP页面,那么之前从第一个JSP页面中发送出来的request的消息将仍然存在,新的页面同样能够取得该request里所包含的一些信息,比如之前的JSP发送request中所包含的参数信息.事实上,它们是同一个request。对于request,对信息的传递,只有setAttribute()这一个方法,该方法将设置一个Object对象到request中,如果当一个request是从jsp从发出,包含的信息段为parameter=param这样的方式,那么只能通过getParameter()得到,getAttribute()是得不到parameter的value的。于JSP的EL表达式,${}这中方式只能得到setAttribute中的值,因此当从一个JSP发送request到达action并且被forward到新的JSP中时,如果想在该JSP中取得JSP发送时的参数信息需要写为这种形式:${parameter.parameter}.


Http配置了一些基本参数和超时设置:

有时使用httpclient的时候,需要等待N长时间,可能此时你决定放弃或者重试。实现上非常简单添加一个参数就可以。

//这里的超时单位是毫秒。这里的http.socket.timeout相当于SO_TIMEOUT  

httpClient.getParams().setIntParameter("http.socket.timeout",3000);

HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager().getParams();

// 设置连接超时时间(单位毫秒)  
 managerParams.setConnectionTimeout(30000); 

// 设置读数据超时时间(单位毫秒)  
 managerParams.setSoTimeout(120000);

//设置get方法请求超时为3

GetMethod getMethod= new  GetMethod(url);  

getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,3000 );

//设置 Http 连接超时为 3 秒

HttpClient httpClient= new  HttpClient();    
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(
3000 );

//设置连接超时和请求超时,这两个超时的意义不同,需要分别设置。

Http请求头详解:

Accept 指定客户端能够接收的内容类型Accept: text/plain, text/html
Accept-Charset 浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5
Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzip
Accept-Language 浏览器可接受的语言Accept-Language: en,zh
Accept-Ranges 可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
Authorization HTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control 指定请求和响应遵循的缓存机制Cache-Control: no-cache
Connection 表示是否需要持久连接。(HTTP 1.1默认进行持久连接)Connection: close
Cookie HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。Cookie: $Version=1; Skin=new;
Content-Length 请求的内容长度Content-Length: 348
Content-Type 请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencoded
Date 请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect 请求的特定的服务器行为Expect: 100-continue
From 发出请求的用户的EmailFrom: user@email.com
Host 指定请求的服务器的域名和端口号Host: www.zcmhi.com
If-Match 只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为EtagIf-Range: “737060cd8c284d8af7ad3082f209582d”
If-Unmodified-Since 只在实体在指定时间之后未被修改才请求成功If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards 限制信息通过代理和网关传送的时间Max-Forwards: 10
Pragma 用来包含实现特定的指令Pragma: no-cache
Proxy-Authorization 连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range 只请求实体的一部分,指定范围Range: bytes=500-999
Referer 先前网页的地址,当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives/71.html
TE 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息TE: trailers,deflate;q=0.5
Upgrade 向服务器指定某种传输协议以便服务器进行转换(如果支持)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent User-Agent的内容包含发出请求的用户信息User-Agent: Mozilla/5.0 (Linux; X11)
Via 通知中间网关或代理服务器地址,通信协议Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 关于消息实体的警告信息Warn: 199 Miscellaneous warning

//Http响应头详解

Accept-Ranges表明服务器是否支持指定范围请求及哪种类型的分段请求Accept-Ranges: bytes
Age 从原始服务器到代理缓存形成的估算时间(以秒计,非负)Age: 12
Allow 对某网络资源的有效的请求行为,不允许则返回405Allow: GET, HEAD
Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache
Content-Encodingweb服务器支持的返回内容压缩编码类型。Content-Encoding: gzip
Content-Language响应体的语言Content-Language: en,zh
Content-Length响应体的长度Content-Length: 348
Content-Location请求资源可替代的备用的另一地址Content-Location: /index.htm
Content-MD5 返回资源的MD5校验值 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 在整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
Date 原始服务器消息发出的时间Date: Tue, 15 Nov 2010 08:12:31 GMT
ETag 请求变量的实体标签的当前值ETag: “737060cd8c284d8af7ad3082f209582d”
Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 Location: http://www.zcmhi.com/archives/94.html
Pragma 包括实现特定的指令,它可应用到响应链上的任何接收方 Pragma: no-cache
Proxy-Authenticate它指出认证方案和可应用到代理的该URL上的参数Proxy-Authenticate: Basic
refresh 应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)
Refresh: 5; url=http://www.zcmhi.com/archives/94.html
Retry-After 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 Retry-After: 120
Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie 设置Http Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Trailer 指出头域在分块传输编码的尾部存在 Trailer: Max-Forwards
Transfer-Encoding文件传输编码Transfer-Encoding:chunked
Vary 告诉下游代理是使用缓存响应还是从原始服务器请求Vary: *
Via 告知代理客户端响应是通过哪里发送的Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning
WWW-Authenticate表明客户端请求实体应该使用的授权方案WWW-Authenticate: Basic


样例:
  Accept-Language: zh-cn,zh;q=0.5
  Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/5.0 (compatible; 域名)
  Host: 域名
  Connection: Keep-Alive


  下面根据以上HTTP请求内容的先后顺序一条条的解读:

Accept-Language: zh-cn,zh;q=0.5
  意思:浏览器支持的语言分别是中文和简体中文,优先支持简体中文。
  详解:
  Accept-Language表示浏览器所支持的语言类型;
  zh-cn表示简体中文;zh 表示中文;
  q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于

提醒服务器哪些是浏览器不接受的内容类型。

Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
  意思:浏览器支持的字符编码分别是 GB2312、utf-8 和任意字符,优先顺序是 GB2312、utf-8、*。
  详解:
  Accept-Charset告诉 Web 服务器,浏览器可以接受哪些字符编码;
  GB2312是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称GB0,由中国国家标准总局发布,1981年5月1日实施。

GB2312 编码通行于中国大陆;新加坡等地也采用此编码。
  utf-8是 Unicode 的一种变长字符编码又称万国码,由 Ken Thompson 于1992年创建,现在已经标准化为 RFC 3629。
  *表示任意字符编码,虽然 q 都是等于 0.7,但明确指定的 GB2312,utf-8 比 * 具有更高的优先级。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  意思:浏览器支持的 MIME 类型分别是 text/html、application/xhtml+xml、application/xml 和 */*,优先顺序是它们从左到右的排列顺序。
  详解:
  Accept表示浏览器支持的 MIME 类型;
  MIME的英文全称是 Multipurpose Internet Mail Extensions(多功能 Internet 邮件扩充服务),它是一种多用途网际邮件扩充协议,

在1992年最早应用于电子邮件系统,但后来也应用到浏览器。
  text/html,application/xhtml+xml,application/xml 都是 MIME 类型,也可以称为媒体类型和内容类型,斜杠前面的是 type(类型),

斜杠后面的是 subtype(子类型);type 指定大的范围,subtype 是 type 中范围更明确的类型,即大类中的小类。
  Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
  text/html表示 html 文档;
  Application:用于传输应用程序数据或者二进制数据;
  application/xhtml+xml表示 xhtml 文档;
  application/xml表示 xml 文档。

Accept-Encoding: gzip, deflate
  意思:浏览器支持的压缩编码是 gzip 和 deflate。
  详解:
  Accept-Encoding表示浏览器有能力解码的编码类型;
  gzip是 GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种文件格式。
  deflate是同时使用了 LZ77 算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。


  User-Agent: Mozilla/5.0 (compatible;域名)
  意思:使用的用户代理是 Mozilla/5.0 (compatible; 域名)。
  详解:
  User-Agent(用户代理),简称 UA,它是一个特殊字符串头,使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、

浏览器渲染引擎、浏览器语言、浏览器插件等。
  Mozilla/5.0:Mozilla 是浏览器名,版本是 5.0;
  compatible(兼容的)表示平台是兼容模式;

  Host: 域名
  Host表示请求的服务器网址;

  Connection: Keep-Alive
  Connection表示客户端与服务连接类型;
  Keep-Alive表示持久连接;

发布了2 篇原创文章 · 获赞 0 · 访问量 1714
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览