Valor do Cookie tem espaço, dando cookie.getValue() não vem o cookie completo
10 respostas
D
dbarreto
Galera,
Por favor me ajude, o valor do cookie gravado tem espaço e mais abri o arquivo onde esta o cookie e está ok, mas na hora de resgatar no java ele traz só até o espaço.
EXEMPLO
cookie = “log”
valor = “teste teste”
Quando rodo o script abaixo ele retorna o valor “teste” sendo que deveria retornar “teste teste”
O valor do cookie é “teste teste” e ele retorna “teste”.
Putz que problema chato esse caraca, será que é um padrão não arquivar valor de cookie com espaço, mas tem um detalhe em javascript (html) o cookie volta completo “teste teste”.
Por favor quem teve esse problema ou sabe a solução me ajuda, obrigado.
T
thingol
Tive esse problema com o Tomcat (e dava diferença da versão 5.0.20 para a 5.0.24). Como vi que pela definição de cookies (veja o RFC) não é permitido ter espaço, é melhor codificar o seu cookie antes de guardá-lo (experimente visualizar os cookies que estão salvos na sua máquina, para ver que estão todos codificados. ) Eu, por exemplo, fiquei com preguiça e passei tudo para hexadecimal (é que outros caracteres, como vírgulas, também dão problemas); veja o que melhor para você fazer.
Enumerationenum=request.getHeaderNames();while(enum.hasMoreElements()){Stringheader=(String)enum.nextElement();out.print("<B>"+header+"</B>: ");out.print(request.getHeader(header)+"<BR>");}out.println("<BR><BR><H2>And, here are all the cookies.</H2>");Cookie[]cookies=request.getCookies();intlength=cookies.length;for(inti=0;i<length;i++){Cookiecookie=cookies[i];out.println("<B>Cookie Name:</B> "+cookie.getName()+"<BR>");out.println("<B>Cookie Value:</B> "+cookie.getValue()+"<BR>");}out.println("</BODY>");out.println("</HTML>");
}
}
D
dbarreto
Luiz Barbosa,
Não uso servlet, mas fiz em jsp conforme código abaixo, mas deu o mesmo erro o retorno foi
Cookie Value: Keppler
Cookie Name: Keppler
out.println("<BR><BR><H2>And, here are all the cookies.</H2>");Cookie[]cookies=request.getCookies();intlength=cookies.length;for(inti=0;i<length;i++){Cookiecookie=cookies[i];out.println("<B>Cookie Name:</B> "+cookie.getName()+“<BR>”);out.println("<B>Cookie Value:</B> "+cookie.getValue()+“<BR>”);}
And, here are all the cookies.
Cookie Name: userName
Cookie Value: Helen
Cookie Name: password
Cookie Value: Keppler Keppler
Cookie Name: JSESSIONID
Cookie Value: 6D6840094F0D546FFCAD65927E62E1D2
D
dbarreto
Caraca só se for alguma configuração em meu servidor porque na máquina que executa não pode ser, pq ele está armazenado completo só o java que não encontra ele completo.
Obrigado pela ajuda, vou pesquisar o motivo.
T
thingol
Como eu falei antes - realmente, cada servidor tem um tratamento diferente para cookies, e versões diferentes do mesmo servidor têm comportamentos diferentes. No meu caso eu tive problemas de cookies com o Tomcat 5.0.20 que foram magicamente resolvidos no 5.0.28; por isso é que falo que é melhor codificar o cookie (troque " " por %20, por exemplo) para não fazer programas que “bombam” se o server não estiver com a versão correta.
D
dbarreto
É vai ser a solução mesmo Valeu obrigado.
welingtondias
Olá, me deculpe pela pergunta simples mas tem algum jeito de configurar mais de valor para um único cookie e depois resgatar esses valores um a um? exemplo: