Caracteres ilegais nos cabeçalhos HTTP
Estou criando umHttpUrlConnection
e precisa definir vários cabeçalhos personalizados.
Eu gostaria de fazer algo ao longo das linhas do seguinte, mas o conteúdo do mapa de cabeçalho precisa vir de uma única string. Há algum caractere que é ilegal ou extremamente raramente usado nos nomes de cabeçalho HTTP e nos valores de cabeçalho HTTP?
HashMap<String, String> headers = new HashMap<String, String>();
// TODO: How can I fill the headers map reliably from a single string?
HttpURLConnection c = (HttpURLConnection) url.openConnection();
for(Map.Entry<String, String> e : headers.entrySet())
c.setRequestProperty(e.getKey(), e.getValue());
Solução por enquanto
Não parece que nenhum nome de cabeçalho HTTP contenha espaços (geralmente use dash em vez disso?), Para que eu possa separar o nome com o valor usando um único espaço. Quanto aos conjuntos de valores de nome, parece que estou ferrada, pois o valor pode conter praticamente qualquer coisa de acordo com a resposta dada. Então, acabei de escolher um personagem que tenho certeza que provavelmente nunca será usado:§
. Se for verdade que é realmente necessário, terei que ajustar meu código: p
Header1 Value1§Header2 Value2§Header3 Header3