Java Servlet getParameter para um parâmetro que é uma URL
Estou construindo um site que envia um URL para um servlet para fins de análise. No lado do cliente, envio o URL como um parâmetro codificado. Por exemplo...
Submit: http://www.site.com
Goes to: http://localhost/myservlet/?url=http%3A%2F%2Fwww.site.com
No lado do servidor, meu servlet solicita o parâmetro da seguinte maneira ...
String url = request.getParameter("url");
O que eu recebo é uma string decodificada:http://www.site.com. Até aí tudo bem - isso funciona como esperado ... na maioria das vezes.
O problema ocorre quando um parâmetro de URL contém parâmetros próprios ...
Submit: http://www.site.com?param1=1¶m2=2
Goes to: http://localhost/myservlet/?url=http%3A%2F%2Fwww.site.com%3Fparam1%3D1%26param2%3D2
Está tudo bem no site do cliente, mas no meu servlet, quando obtenho o parâmetro, recebo apenas parte do parâmetro url!
http://www.site.com?param1=1
Ele soltou o segundo parâmetro do meu parâmetro de URL de entrada! Definitivamente, estou codificando o parâmetro url antes de enviá-lo ao servidor ... o que está acontecendo?