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

questionAnswers(1)

yourAnswerToTheQuestion