web-dev-qa-db-ja.com

HttpURLConnectionを使用してカスタムヘッダーを設定する

GETを使用して、Rest APIにHttpURLConnectionリクエストを送信しています。

カスタムヘッダーを追加する必要がありますが、値を取得しようとするとnullを取得しています。

コード:

URL url;
try {
    url = new URL("http://www.example.com/rest/");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    // Set Headers
    conn.setRequestProperty("CustomHeader", "someValue");
    conn.setRequestProperty("accept", "application/json");

    // Output is null here <--------
    System.out.println(conn.getHeaderField("CustomHeader"));

    // Request not successful
    if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
        throw new RuntimeException("Request Failed. HTTP Error Code: " + conn.getResponseCode());
    }

    // Read response
    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    StringBuffer jsonString = new StringBuffer();
    String line;
    while ((line = br.readLine()) != null) {
        jsonString.append(line);
    }
    br.close();
    conn.disconnect();
} catch (IOException e) {
    e.printStackTrace();
}

私は何が欠けていますか?

8
Beginner

conn.getHeaderField("CustomHeader")は、リクエストではなくresponseヘッダーを返します。

リクエストヘッダーを返すには、conn.getRequestProperty("CustomHeader")を使用します。

6

送信することをお勧めします

conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("CustomHeader", token);

の代わりに

// Set Headers
conn.setRequestProperty("CustomHeader", "someValue");
conn.setRequestProperty("accept", "application/json");

タイプ値とヘッダーの両方を変更する必要があります。私の場合はうまくいきます。

6
Alp Altunel