Obter o URL completo e a string de consulta no Servlet para solicitações HTTP e HTTPS

Estou escrevendo um código cuja tarefa é recuperar um URL solicitado ou um caminho completo. Eu escrevi este código:

HttpServletRequest request;//obtained from other functions
String uri = request.getRequestURI();
if (request.getQueryString() != null)
    uri += "?" + request.getQueryString();

Então, quando eu navegohttp://google.com?q=abc está tudo bem (correto). Mas há um problema quando eu navegohttps://google.com. O valor deuri éhttp://google.com:443google.com:443Então o programa não só quandoHTTPS é usado.

E a saída é a mesma pararequest.getRequestURL().toString().

Qual é a solução?

questionAnswers(3)

yourAnswerToTheQuestion