JAVA如何取得HTTP请求头

在利用Java网络编程时,利用Java获取HTTP Request 和 Response头字段;

可以利用Java语言根据需要添加自定义的HTTP头字段,而不必拘泥于标准HTTP定义的头字段。

代码如下:

public class TestURL {
	public static void main(String[] args) {
		String destURLStr= "http://www.baidu.com";
		URL destURL = null;
		URLConnection urlCon = null;
		HttpURLConnection httpUrlCon= null;
		String readResFile = "C:/Users/zhoujw/Desktop/readResFile.html";
		BufferedWriter bw = null;
		try {
			bw = new BufferedWriter(new FileWriter(readResFile));
			destURL = new URL(destURLStr);
			urlCon = destURL.openConnection();
			httpUrlCon = (HttpURLConnection)urlCon;
			//set request property
			httpUrlCon.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
			//可根据需要添加自定义请求头
			httpUrlCon.setRequestProperty("Test Header1", "test1");
			httpUrlCon.setRequestProperty("Test Header2", "test2");
			httpUrlCon.connect();
			BufferedReader br = new BufferedReader(new InputStreamReader(httpUrlCon.getInputStream(), "gbk"));
			String webpage = null;
			while((( webpage = br.readLine()) != null))
			{
//				System.out.println(webpage);
				bw.write(webpage);
				bw.flush();
			}
			//debug
			System.out.println("Self Define Headers:");
			System.out.println(" Test Header1: " + httpUrlCon.getRequestProperty("Test Header1"));
			System.out.println(" Test Header2: " + httpUrlCon.getRequestProperty("Test Header2"));
			System.out.println();
			//echo request property
			echoRequestHeaders(httpUrlCon);
			//echo response property
			echoResponseHeaders(httpUrlCon);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void echoRequestHeaders(HttpURLConnection httpUrlCon){
		System.out.println("Request Headers:");
		System.out.println(" " + httpUrlCon.getRequestMethod() + " / " + " HTTP/1.1");
		System.out.println(" Host: " + httpUrlCon.getRequestProperty("Host"));
		System.out.println(" Connection: " + httpUrlCon.getRequestProperty("Connection"));
		System.out.println(" Accept: " + httpUrlCon.getRequestProperty("Accept"));
		System.out.println(" User-Agent: " + httpUrlCon.getRequestProperty("User-Agent"));
		System.out.println(" Accept-Encoding: " + httpUrlCon.getRequestProperty("Accept-Encoding"));
		System.out.println(" Accept-Language: " + httpUrlCon.getRequestProperty("Accept-Language"));
		System.out.println(" Cookie: " + httpUrlCon.getRequestProperty("Cookie"));
		System.out.println(" Connection: " + httpUrlCon.getHeaderField("Connection"));//利用另一种读取HTTP头字段
		System.out.println();
	}

	public static void echoResponseHeaders(HttpURLConnection httpUrlCon) throws IOException{
		System.out.println("Response Headers:");
		System.out.println(" " + "HTTP/1.1 " + httpUrlCon.getResponseCode() + " " + httpUrlCon.getResponseMessage());
		System.out.println(" status: " + httpUrlCon.getResponseCode() + " " + httpUrlCon.getResponseMessage());
		System.out.println(" content-encoding: " + httpUrlCon.getContentEncoding());
		System.out.println(" content-length : " + httpUrlCon.getContentLength());
		System.out.println(" content-type: " + httpUrlCon.getContentType());
		System.out.println(" Date: " + httpUrlCon.getDate());
		System.out.println(" ConnectTimeout: " + httpUrlCon.getConnectTimeout());
		System.out.println(" expires: " + httpUrlCon.getExpiration());
		System.out.println(" content-type: " + httpUrlCon.getHeaderField("content-type"));//利用另一种读取HTTP头字段
		System.out.println();
	}
}

运行结果:

Self Define Headers:
 Test Header1: test1
 Test Header2: test2

Request Headers:
 GET /  HTTP/1.1
 Host: www.baidu.com
 Connection: keep-alive
 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
 User-Agent: Java/1.6.0_20
 Accept-Encoding: gzip,deflate,sdch
 Accept-Language: null
 Cookie: null
 Connection: Keep-Alive
http://www.baidu.com

Response Headers:
 HTTP/1.1 200 OK
 status: 200 OK
 content-encoding: gzip
 content-length : -1
 content-type: text/html; charset=utf-8
 Date: 1427817028000
 ConnectTimeout: 0
 expires: 1427817001000
 content-type: text/html; charset=utf-8
时间: 2024-08-02 19:09:32

JAVA如何取得HTTP请求头的相关文章

[Java][Web]Request 获取请求头和数据

获取方式一 InputStream in = request.getInputStream(); int len = 0; byte buffer[] = new byte[1024]; while((len = in.read(buffer)) > 0) { System.out.println(len); System.out.println(new String(buffer,0,len)); } 获取方式二 String value  = request.getParameter("

[Java.Web][Servlet]常用请求头

response.setStatus(302); response.setHeader("location", "/day04/1.html"); 这段代码可以实现 页面重定向到  "/day04/1.html" String data = "aaaaa"; System.out.println("原始数据大小:" + data.length()); ByteArrayOutputStream bout =

Java通过浏览器请求头(User-Agent)获取 浏览器类型,操作系统类型,手机机型

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. 一些网站常常通过判断 UA 来给不同的操作系统.不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测. 一:获得浏览器请求头中的User-Agent String ua = request.getHeader("User-Agent") 二:获得浏

4、处理方法中获取请求参数、请求头、Cookie及原生的servlet API等

1.请求参数和请求头 使用@RequestParam绑定请求参数,在处理方法的入参处使用该注解可以把请求参数传递给请求方法 —— value :参数名 —— required : 是否必须,默认为true,表示请求参数中必须包含对应的参数,如果不存在,则抛出异常     例如: @RequestMapping(value="/param") public String testParam(@RequestParam(value="name", required=tr

JAVA模拟HTTP post请求上传文件

在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也比较容易出错.今天我们就一起来学习HTTP POST的报文格式以及通过Java来模拟文件上传的请求. 首先我们来看一个POST的报文请求,然后我们再来详细的分析它. POST报文格式 [plain] view plain co

HTTP 请求头 & 响应头

HTTP请求头概述 HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头.大多数请求头并不是必需的, 但Content-Length除外.对于POST请求来说Content-Length必须出现. 下面是一些最常见的请求头 Accept:浏览器可接受的MIME类型. Accept-Charset:浏览器可接受的字符集. Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip.Ser

request获取请求头和请求数据

1 package cn.itcast.request; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.PrintWriter; 6 import java.lang.reflect.InvocationTargetException; 7 import java.util.Enumeration; 8 import java.util.Map; 9 10 import javax.s

捕获异常、存sd卡、封装请求头体、加密map值、网络工具类、生成Json、Https协议、传log日志到服务器、app崩溃友好重启

点击打开链接,免积分下载 在集成了统计SDK(友盟统计,百度统计等)之后,有一个非常有利于测试的功能:错误分析!此功能能够将程序在运行中碰到的崩溃(runtimeException)问题反馈到服务器,帮助开发者改善产品,多适配机器.然而在公司android开发中不集成这些SDK,那应该怎么实现这样的功能呢?下面让我们来看下如何使用UncaughtExceptionHandler来捕获异常. 在Android开发中,常常会出现uncheched Exception 导致程序的crash,为了提供良

HTTP请求头详解

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和 可选的消息体组成.HTTP的头域包括通用头,请求头,响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成.域名是大小写无关的, 域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符. 通用头域 通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control. Connection