getRequestProperty (“Authorization”) sempre retorna null

Eu estou tentando ler o header de autorização para uma solicitação HTTP (porque eu preciso adicionar algo a ele), mas eu sempre obter null para o valor do header. Outros headers funcionam bem.

public void testAuth() throws MalformedURLException, IOException{ URLConnection request = new URL("http://google.com").openConnection(); request.setRequestProperty("Authorization", "MyHeader"); request.setRequestProperty("Stackoverflow", "anotherHeader"); // works fine assertEquals("anotherHeader", request.getRequestProperty("Stackoverflow")); // Auth header returns null assertEquals("MyHeader", request.getRequestProperty("Authorization")); } 

Estou fazendo algo errado? Isso é um recurso de “segurança”? Existe uma maneira de fazer isso funcionar com URLConnection ou eu preciso usar outra biblioteca de cliente HTTP?

Aparentemente, é um “recurso” de segurança. A URLConnection é, na verdade, uma instância de sun.net.www.protocol.http.HttpURLConnection . Define getRequestProperty como:

  public String getRequestProperty (String key) { // don't return headers containing security sensitive information if (key != null) { for (int i=0; i < EXCLUDE_HEADERS.length; i++) { if (key.equalsIgnoreCase(EXCLUDE_HEADERS[i])) { return null; } } } return requests.findValue(key); } 

O array EXCLUDE_HEADERS é definido como:

  // the following http request headers should NOT have their values // returned for security reasons. private static final String[] EXCLUDE_HEADERS = { "Proxy-Authorization", "Authorization" }; 

Você já tentou usar URLConnection.addRequestProperty() ? É assim que eu uso para adicionar headers de solicitação HTTP.

Eu não estou feliz com as dependencies extras, mas seguindo a sugestão de mudar para o Commons, resolvi o problema imediato para mim.

Eu ainda gostaria de saber qual era o problema com o meu código original.

Intereting Posts