⑴ java:有没有办法改变接收HTTP响应头
Respon se自己写相应头,按说中间件都给补充好了,想咋搞就咋搞
⑵ java 怎么判断请求是https 请求头
JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问。但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点。建议到权威CA机构去申请一受信任的免费https证书来使用,比如wosign免费多域名https证书等。
⑶ java如何取得http自定义的头部信息
把http自定义的头部信息放入到session中,在http的整个生命周期中,session是一直存在的,在后边需要的时候可以从session中取出来。
⑷ java怎么在拦截器获取请求的head
SpringMVC 拦截器有个doFilter方法,该方法有个参数ServletRequest request,然后request.getParameter 就能获得你想要的参数
⑸ java能获取http请求头里range么
可以, URLConnection conn = obj.openConnection();
Map<String, List<String>> map = conn.getHeaderFields();
⑹ java怎么从response获取header
首先,我们先看一下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()));
cm = new (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);
⑺ 求java socket请求http的报文头格式!!!
手中不是自己的电脑 没环境调试不了 不过我找了下面的内容 你看有帮助没:
最近,需要编写一个工具模拟HTTP Client, 登录到一个Server并且要添加一些数据。出现的问题是:login可以成功,但是,添加数据时,总是报错如下:
HTTP/1.1 505 HTTP Version Not Supported
Server: Apache-Coyote/1.1
Date: Wed, 26 Aug 2009 03:20:19 GMT
Connection: close
根据错误的提示,应该是HTTP版本不一致,可是,第一次login都成功了,说明版本应该没有问题呀。
找了好多资料,都说版本有问题。
最后,终于找到最终的原因了,HTTP写的格式是非常严谨的,只要格式不匹配,就会报错误。
我在HTTP的头中添加一个空格:
HTTP/1.1[空格在此]
Accept: */*
Accept-Language: zh-cn
Host: 10.224.54.126:8080
Cookie: F5_CREDENTIAL=L7a
Connection: Keep-Alive
在提交请求,连login都不可以了,而且报的错误是:HTTP/1.1 505 HTTP Version Not Supported
从此可以推断出,我的添加数据的消息中可能某个地方多了一个空格。
经过仔细的查找,果然,找到了几个空格,用%20替代之,问题解决了。
另:我也在javaeye里面混,只是好久没去了,有机会交流交流
⑻ 怎么用Java语言构造http头 调用什么API函数 最好能举例来说明 比如说 我要连接WebQQ服务器来获取验证码,
构造HTTP请求头?不是很懂楼主的意思。是想实现浏览器和服务器的通信么?B/S模式,是一种请求/响应交互模式。请求也就是楼主所说的HTTP请求头。通过JAVA网络编程中的SCOKET机制可以加以实现。不过就JAVA而言,其长处在这方面不行。毕竟是高级语言,在运行速度上无法与C/C++等较底层的高级语言相比的。
⑼ java怎样获取http请求的body
读取Body使用request.getReader(),但getReader获取的是BufferedReader,需要把它转换成字符串,下面是转换的方法
public class TestController {
@RequestMapping("/a")
protected void doPost(HttpServletRequest request,
HttpServletResponse response, BufferedReader br)
throws ServletException, IOException {
//Header部分
System.out.print(request.getHeaderNames());
Enumeration<?> enum1 = request.getHeaderNames();
while (enum1.hasMoreElements()) {
String key = (String) enum1.nextElement();
String value = request.getHeader(key);
System.out.println(key + "\t" + value);
}
//body部分
String inputLine;
String str = "";
try {
while ((inputLine = br.readLine()) != null) {
str += inputLine;
}
br.close();
} catch (IOException e) {
System.out.println("IOException: " + e);
}
System.out.println("str:" + str);
}