标签:
HTTP响应头是网站服务器端针对客户的请求发出的一串信息,它可能包含了请求文档的内容类型,文档长度,对内容编码的字符集,日期时间,内容的过期时间,内容的最后修改时间,服务器型号,是否进行缓存等重要信息。了解这些信息对Java的网络编程具有重要的指导意义。
HTTP 使用内容类型,是指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型在MIME Internet邮件协议上模型化,即Web服务 器告诉Web浏览器该文件所具有的种类,是HTML文档、GIF格式图像、声音文件还是独立的应用程序。大多数Web浏览器都拥有一系列的可配置的辅助应 用程序,它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:
Connection:keep-alive。TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
不论哪个版本,响应码从100到199总表示一个提供信息的相应,200到299总指示成功,300到399表示重定向,400到499表示客户端错误,500到599表示服务器端错误。
下面是一些常见的状态码及其含义
状态码 |
含义 |
100 Continue |
服务器准备接受,允许客户端在请求中发送大量数据之前询问服务器是否将接受该请求 |
200 OK |
请求成功,若是get或post请求,则包含请求数据;若是head请求,则之包含 |
301 Moved Permanently |
资源已经永久移到一个新的URL |
302 Moved Temporarily |
资源暂时移到一个新的URL |
304 Not Modified |
客户端应该从缓存中加载文档 |
403 Forbidden |
服务器理解请求,但有意拒绝处理 |
404 Not Found |
服务器找不到请求资源 |
500 Internal Server Error |
服务器不知道如何处理 |
502 Bad Gateway |
网关或者代理服务器试图完成请求时,接受到一个无效的相应 |
503 Service Unavailable |
服务器暂时无法处理请求,可能是超负荷或维护原因 |
package demo0808.demo1; /** * 现实响应头代码 */ import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class ShowHttpHeaders { //要查找的网址 private ArrayList<String> websites; /** * 构造函数 * @param websites 网站列表 */ public ShowHttpHeaders(ArrayList<String> websites) { this.websites=websites; } /** * 获取响应头 * 打印到控制台 */ public void getHeaders() { if(websites==null) { System.err.println("查询网址不能为空!"); return; } try { for(String website:websites) { System.out.println("----------------网站:"+website+"HTTP响应头---------------"); URL url = new URL(website); URLConnection connection = url.openConnection(); Map<String, List<String>> headerFields = connection.getHeaderFields(); Set<Entry<String, List<String>>> entrySet = headerFields.entrySet(); Iterator<Entry<String, List<String>>> iterator = entrySet.iterator(); while(iterator.hasNext()) { Entry<String, List<String>> next = iterator.next(); String key=next.getKey(); List<String> value = next.getValue(); if(key==null) System.out.println(value.toString()); else System.out.println(key+":"+value.toString()); } System.out.println(""); } } catch ( IOException e) { System.err.println("无法查询网址!"); } } }
package demo0808.demo1; /** * 测试代码 */ import java.util.ArrayList; public class Test { public static void main(String[] args) { String web1="http://www.oschina.net/"; String web2="http://news.baidu.com/"; String web3="https://linux.cn/"; String web4="http://www.taobao.com/"; ArrayList<String> websites=new ArrayList<String>(); websites.add(web1); websites.add(web2); websites.add(web3); websites.add(web4); ShowHttpHeaders showHttpHeaders = new ShowHttpHeaders(websites); showHttpHeaders.getHeaders(); } }
----------------网站:http://www.oschina.net/HTTP响应头--------------- [HTTP/1.1 403 Forbidden] Date:[Sat, 08 Aug 2015 02:35:08 GMT] Content-Length:[700] Connection:[keep-alive] Content-Type:[text/html;charset=UTF-8] Server:[Tengine/2.1.0] ----------------网站:http://news.baidu.com/HTTP响应头--------------- [HTTP/1.1 200 OK] P3p:[CP=" OTI DSP COR IVA OUR IND COM "] Transfer-Encoding:[chunked] Vary:[Accept-Encoding, Accept-Encoding] Date:[Sat, 08 Aug 2015 02:35:09 GMT] Set-Cookie:[BAIDUID=27B1B47C0413E086084F1E668200715A:FG=1; expires=Sun, 07-Aug-16 02:35:09 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1, LOCALGX=%u5E7F%u5DDE%7C%35%34%39%36%7C%u5E7F%u5DDE%7C%35%34%39%36; expires=Sat, 15-Aug-2015 02:35:09 GMT; path=/; domain=.news.baidu.com] Content-Type:[text/html] Server:[Apache] ----------------网站:https://linux.cn/HTTP响应头--------------- [HTTP/1.1 200 OK] Strict-Transport-Security:[max-age=63072000; includeSubdomains; preload] Transfer-Encoding:[chunked] Date:[Sat, 08 Aug 2015 02:35:10 GMT] Set-Cookie:[dx_516d_sid=qADFvF; expires=Sun, 09-Aug-2015 02:35:10 GMT; Max-Age=86400; path=/; domain=.linux.cn; secure, dx_516d_lastact=1439001310%09index.php%09; expires=Sun, 09-Aug-2015 02:35:10 GMT; Max-Age=86400; path=/; domain=.linux.cn; secure, dx_516d_sid=qADFvF; expires=Sun, 09-Aug-2015 02:35:10 GMT; Max-Age=86400; path=/; domain=.linux.cn; secure, dx_516d_lastvisit=1438997710; expires=Mon, 07-Sep-2015 02:35:10 GMT; Max-Age=2592000; path=/; domain=.linux.cn; secure, dx_516d_saltkey=Vp3c3GiK; expires=Mon, 07-Sep-2015 02:35:10 GMT; Max-Age=2592000; path=/; domain=.linux.cn; secure; httponly] Connection:[keep-alive] Content-Type:[text/html; charset=utf-8] Server:[nginx] X-Content-Type-Options:[nosniff] ----------------网站:http://www.taobao.com/HTTP响应头--------------- [HTTP/1.1 302 Found] Date:[Sat, 08 Aug 2015 02:35:10 GMT] Content-Length:[258] Location:[https://www.taobao.com/] Set-Cookie:[thw=cn; Path=/; Domain=.taobao.com; Expires=Sun, 07-Aug-16 02:35:10 GMT;] Connection:[keep-alive] Content-Type:[text/html] Server:[Tengine]
标签:
原文地址:http://my.oschina.net/zzw922cn/blog/489430