'/' добавляется в мой URL перенаправления, когда я пытаюсь передать параметры запроса - PullRequest
0 голосов
/ 02 марта 2019

У меня есть приложение Spring, в котором есть контроллер, который перенаправляет пользователя на определенный URL-адрес на основе данных, которые он мне отправляет.Если данные неверны, я направляю их на URL с кодом ошибки и описанием.Однако, когда я делаю это перенаправление, он добавляет / перед параметрами запроса, делая перенаправление неправильным.Таким образом, код будет выглядеть следующим образом:

Controller.class

String Failure_URL="https://www.google.com";

if(response.getStatus()!=200) {
   //there was an error, so redirect to error URL

   //map response to my object class
   MyObject obj = new MyObject(response);
   String redirectURL = Failure_URL + "?error_code=" + obj.getError_Code()
        + "&description=" + obj.getDescription();

  }
  return new ModelAndView("redirect:" + redirectURL);

Когда я смотрю на свою сетевую трассировку во время тестирования, я вижу, что заголовок Location установлен правильно.https://www.google.com?error_code=001&description=System+Error, однако, когда он перенаправляет URL-адрес, он превращается в https://www.google.com/?error_code=SECB001&description=System+Error, превращая эти параметры запроса в URI пути.Есть ли способ помешать этому, это означает, что эти значения не установлены как параметры правильно.Это связано с + в описании, и я должен его кодировать?

1 Ответ

0 голосов
/ 02 марта 2019

Вы должны использовать UriComponentsBuilder Spring для программного создания URL-адреса и избегать такого странного поведения.

Вы можете создать URL-адрес, как показано ниже:

String Failure_URL = UriComponentsBuilder.newInstance()
            .scheme("https")
            .host("www.google.com")
            .queryParam("error_code", "error_code_value")
            .queryParam("description", "description_value")
            .build().toUriString();

В случае, если вам нужно добавить / в URL вы можете добавить .path("/") везде, где это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...