0

コードの http 以下にヘッダーを追加しようとしています -

URL url = new URL("http://localhost:8080/share/page"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("SsoUserHeader", "admin"); 
conn.addRequestProperty("mysso", "hi");
conn.setRequestProperty("Authorization",basicAuth );
conn.connect();

Map<String, List<String>> hdrs = conn.getHeaderFields();
Set<String> hdrKeys = hdrs.keySet();
for (String k : hdrKeys)
    System.out.println("Key: " + k + "  Value: " + hdrs.get(k));

System.out.println("Header1: "+conn.getHeaderField("SsoUserHeader"));
System.out.println("Header2: "+conn.getHeaderField("mysso"));
System.out.println("Header3: "+conn.getHeaderField("Authorization"));

しかし、これらのヘッダーの値を出力しようとすると、null になります。ヘッダー値を取得する方法を教えてください。私が得ている出力

Key: null  Value: [HTTP/1.1 200 OK]
Key: Content-Language  Value: [en-US]
Key: Transfer-Encoding  Value: [chunked]
Key: Date  Value: [Sun, 07 Jul 2013 05:30:45 GMT]
Key: Set-Cookie  Value: [JSESSIONID=E6BCB7632619ABF41D1A7C6D7CDC53E4;  
                                Path=/share/; HttpOnly]

Key: Content-Type  Value: [text/html;charset=utf-8]
Key: Server  Value: [Apache-Coyote/1.1]
Key: Cache-Control  Value: [no-cache]

Header1: null
Header2: null
Header3: null
4

1 に答える 1

1

getHeaderFields()HTTP リクエストではなく、HTTP レスポンスで送信されたヘッダー フィールドを返します。Content-Language、Transfer-Encoding などのヘッダーを送信したことはありませんが、getHeaderFields() で取得します。これは、サーバーがこれらのヘッダーを送信したためです。リクエストで設定されたカスタム ヘッダー フィールドは、http://localhost:8080/share/page

/page は、以下を使用してこれらのヘッダー フィールドにアクセスできます。

request.getHeader("SsoUserHeader"); //admin
request.getHeader("mysso"); //hi
request.getHeader("Authorization"); 
于 2013-07-07T06:01:12.803 に答える