pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

獲取原始 HTTP 響應標頭

Getting raw HTTP response headers(獲取原始 HTTP 響應標頭)
本文介紹了獲取原始 HTTP 響應標頭的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

有沒有辦法獲取原始響應 http 標頭?

getHeaderField() 方法對我不起作用,因為服務器吐出多個Set-Cookie",其中一些會丟失.

解決方案

getHeaderField() 方法對我不起作用

您是在 <代碼>java.net.URLConnection,是嗎?不,使用 URLconnection 無法獲取原始 HTTP 響應標頭.您需要退回到低級別的 Socket 編程.這是一個SSCCE,只需復制'n'paste'n'運行它.

包com.stackoverflow.q2307291;導入 java.io.BufferedReader;導入 java.io.IOException;導入 java.io.InputStreamReader;導入 java.io.OutputStreamWriter;導入 java.io.PrintWriter;導入 java.net.Socket;公共類測試{公共靜態 void main(String[] args) 拋出 IOException {字符串主機名 = stackoverflow.com";國際端口 = 80;套接字套接字 = null;PrintWriter 作家 = null;BufferedReader 閱讀器 = null;嘗試 {套接字 = 新套接字(主機名,端口);writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));writer.println("GET/HTTP/1.1");writer.println("主機:" + 主機名);writer.println("接受:*/*");writer.println("用戶代理:Java");//說實話.writer.println("");//重要,否則服務器會期望請求中包含更多內容.writer.flush();reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));for (String line; (line = reader.readLine()) != null;) {if (line.isEmpty()) 中斷;//當標題完成時停止.我們對所有的 HTML 不感興趣.System.out.println(line);}} 最后 {if (reader != null) try { reader.close();} 捕捉(IOException logOrIgnore){}if (writer != null) { writer.close();}if (socket != null) try { socket.close();} 捕捉(IOException logOrIgnore){}}}}

為避免每個嘗試此代碼段的人都使 SO 過載,輸出如下所示:

<上一頁>HTTP/1.1 200 正常緩存控制:私有內容類型:文本/html;字符集=utf-8過期:2010 年 2 月 21 日星期日 20:39:08 GMT服務器:Microsoft-IIS/7.5日期:2010 年 2 月 21 日星期日 20:39:07 GMT連接:關閉內容長度:208969

要了解有關以低級方式發送 HTTP 請求的更多信息,請閱讀 HTTP 規范.

但是,您可能想使用 getHeaderFields() 方法來檢索具有多個值的標頭.<代碼>getHeaderField() 即只返回最后一個值,根據鏈接的 API 文檔.

列表<字符串>cookies = connection.getHeaderFields().get("Set-Cookie");

Is there any way to get raw response http header?

The getHeaderField() method doesn't work for me, because server spits multiple 'Set-Cookie' and some of them get lost.

解決方案

The getHeaderField() method doesn't work for me

You're asking this in the context of java.net.URLConnection, is it? No, obtaining the raw HTTP response headers is not possible with URLconnection. You'll need to fall back to low-level Socket programming. Here's an SSCCE, just copy'n'paste'n'run it.

package com.stackoverflow.q2307291;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class Test {

    public static void main(String[] args) throws IOException {
        String hostname = "stackoverflow.com";
        int port = 80;

        Socket socket = null;
        PrintWriter writer = null;
        BufferedReader reader = null;

        try {
            socket = new Socket(hostname, port);
            writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
            writer.println("GET / HTTP/1.1");
            writer.println("Host: " + hostname);
            writer.println("Accept: */*");
            writer.println("User-Agent: Java"); // Be honest.
            writer.println(""); // Important, else the server will expect that there's more into the request.
            writer.flush();

            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            for (String line; (line = reader.readLine()) != null;) {
                if (line.isEmpty()) break; // Stop when headers are completed. We're not interested in all the HTML.
                System.out.println(line);
            }
        } finally {
            if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {} 
            if (writer != null) { writer.close(); }
            if (socket != null) try { socket.close(); } catch (IOException logOrIgnore) {} 
        }
    }

}

To avoid SO being overloaded by everyone trying this snippet, here's how the output will look like:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Expires: Sun, 21 Feb 2010 20:39:08 GMT
Server: Microsoft-IIS/7.5
Date: Sun, 21 Feb 2010 20:39:07 GMT
Connection: close
Content-Length: 208969

To learn more about sending HTTP requests the low-level way, read the HTTP specification.

However, you probably want to make use of getHeaderFields() method instead to retrieve a header with multiple values. The getHeaderField() namely only returns the last value, as per the linked API doc.

List<String> cookies = connection.getHeaderFields().get("Set-Cookie");

這篇關于獲取原始 HTTP 響應標頭的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Parsing an ISO 8601 string local date-time as if in UTC(解析 ISO 8601 字符串本地日期時間,就像在 UTC 中一樣)
How to convert Gregorian string to Gregorian Calendar?(如何將公歷字符串轉換為公歷?)
Java: What/where are the maximum and minimum values of a GregorianCalendar?(Java:GregorianCalendar 的最大值和最小值是什么/在哪里?)
Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar switch(1582 年 10 月 15 日之前日期的日歷到日期轉換.公歷到儒略歷切換)
java Calendar setFirstDayOfWeek not working(java日歷setFirstDayOfWeek不起作用)
Java: getting current Day of the Week value(Java:獲取當前星期幾的值)
主站蜘蛛池模板: 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 液氮罐(生物液氮罐)百科-无锡爱思科 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 | 中直网_行业门户-行业人专业的交流平台!| 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 干培两用箱-细菌恒温培养箱-菲斯福仪器| PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 苏州注册公司_苏州代理记账_苏州工商注册_苏州代办公司-恒佳财税 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 丝印油墨_水性油墨_环保油墨油漆厂家_37国际化工 | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 工作服定制,工作服定做,工作服厂家-卡珀职业服装(苏州)有限公司 |