java中如何设置HTTP协议的头信息(header)

在Java中怎样可以设置HTTP协议的header,可以使用request.getHeader(param)方法可以获取值,我用了response.setHeader(.... 在Java中怎样可以设置HTTP协议的header,可以使用request.getHeader(param)方法可以获取值,我用了response.setHeader(..)和response.addHeader(..)取出来都是空的,哪位大虾知道呀……小弟在此谢过 展开
 我来答
samismiling
2015-06-08 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
首先,我们先看一下http的头信息到底是什么:
HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。
在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:
HttpResponse response = null;
HttpGet get = new HttpGet(url);
get.addHeader("Accept", "text/html");
get.addHeader("Accept-Charset", "utf-8");
get.addHeader("Accept-Encoding", "gzip");
get.addHeader("Accept-Language", "en-US,en");
get.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
response = client.execute(get);
HttpEntity entity = response.getEntity();
Header header = entity.getContentEncoding();
if (header != null)
{
HeaderElement[] codecs = header.getElements();
for (int i = 0; i < codecs.length; i++)
{
if (codecs[i].getName().equalsIgnoreCase("gzip"))
{
response.setEntity(new GzipDecompressingEntity(entity));
}
}
}
return response;
其中,client为一个HttpClient的实力,创建方式如:
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(2);
HttpHost googleResearch = new HttpHost("research.google.com", 80);
HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80);
cm.setMaxPerRoute(new HttpRoute(googleResearch), 30);
cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50);
DefaultHttpClient client = new DefaultHttpClient(cm);
思松073
2020-05-26
知道答主
回答量:1
采纳率:0%
帮助的人:615
展开全部
headers.set("Authorization", "Bearer "+授权码);
将授权码放到头信息中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xietengxiang
2010-07-23 · TA获得超过266个赞
知道小有建树答主
回答量:125
采纳率:100%
帮助的人:45.4万
展开全部
在Servlet类的service方法里面写:response.setHeader(..);response.addHeader(..)
在跳转的目标页面取 就能取到了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eee2356eee
2010-07-23 · TA获得超过1139个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:606万
展开全部
response.setHeader等必须在代码最开始写入

否则数据流如果已经发给客户端,那么HTTP头是改不了的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户46154
2010-07-23 · TA获得超过174个赞
知道答主
回答量:196
采纳率:0%
帮助的人:95.7万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式