⑴ 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);
}