HTTP请求和响应

1、HTTP请求包含的内容:

(1)HTTP请求的请求行

(2)HTTP请求的请求头

2、HTTP响应包含的内容:

(1)HTTP响应的状态行

    200表示成功接受请求并完成整个处理过程

    302表示去新地址找资源

    307和304表示去缓存中找资源

    404表示客户请求资源不存在

    403表示客户没有权限获取资源

    500表示服务器端出现错误

(2)HTTP响应的响应头

 

程序示例:

	//用location和302实现请求重定向
	public void test1(HttpServletResponse response){
		response.setStatus(302);
		response.setHeader("location", "/day04/1.html");
	}
	//压缩数据输出
	private void test2(HttpServletResponse response)throws IOException{
		String data = "aaaaaaaaaa";
		System.out.println("原始数据大小: "+data.getBytes().length);
		
		ByteArrayOutputStream bout = new ByteArrayOutputStream();//底层流
		
		GZIPOutputStream gout = new GZIPOutputStream(bout);//包装流
		gout.write(data.getBytes());//若数据太小,则不能写入底层流
		gout.close();//关闭流,则必须写入底层流
		
		byte gzip[] = bout.toByteArray();//得到压缩后的数据
		System.out.println("压缩后数据大小: "+gzip.length);
		
		//通知浏览器数据采用压缩格式
		response.setHeader("Content-Encoding", "gzip");
		response.setHeader("Content-Length", gzip.length+"");
		response.getOutputStream().write(gzip);
	}
	//通过content-type头字段,控制浏览器以哪种方式处理数据
	private void test3(HttpServletResponse response) throws IOException {
		response.setHeader("content-type","image/bmp");
		
		InputStream in = this.getServletContext().getResourceAsStream("/1.bmp");
		int len = 0;
		byte buffer[] = new byte[1024];
		
		OutputStream out = response.getOutputStream();
		while((len = in.read(buffer)) > 0){
			out.write(buffer, 0 ,len);
		}
	}
	//定时刷新
	private void test4(HttpServletResponse response) throws IOException {
		response.setHeader("refresh", "3;url='http://www.sina.com.cn'");
		
		String data = "aaaaaaaa";
		response.getOutputStream().write(data.getBytes());
	}
	//下载方式获得资源
	private void test5(HttpServletResponse response) throws IOException {
		response.setHeader("content-disposition", "attachment;filename=1.bmp");
		
		InputStream in = this.getServletContext().getResourceAsStream("/1.bmp");
		int len = 0;
		byte buffer[] = new byte[1024];
		
		OutputStream out = response.getOutputStream();
		while((len=in.read(buffer))>0){
			out.write(buffer,0,len);
		}
	}


Http实用头字段Range头

	/**
	 * 断点下载
	 */
	public static void main(String[] args) throws Exception{
		
		URL url = new URL("http://localhost:8080/day05/a.txt");
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		
		conn.setRequestProperty("range", "bytes=5-");//设置请求头range,传输范围是第5个字节以后得内容
		
		InputStream in = conn.getInputStream();
		int len = 0;
		byte buffer[] = new byte[1024];
		FileOutputStream out = new FileOutputStream("c:\\a.txt",true);//第二个参数默认为false, 设置为true支持续传
		
		while((len = in.read(buffer))>0){
			out.write(buffer, 0, len);
		}
		
		in.close();
		out.close();
	}




 

posted @ 2013-04-18 13:42  魅惑之眼  阅读(130)  评论(0编辑  收藏  举报