当我尝试传递查询参数时,'/'被添加到我的重定向URL中

时间:2019-03-01 22:50:39

标签: spring url

我有一个spring应用,该应用具有一个控制器,可根据用户发送给我的数据将其重定向到特定的URL。如果数据有误,我会将其定向到带有错误代码和描述的URL。但是,当我执行此重定向时,它将在查询参数之前添加int func(arr[5]){ _array = arr[4]; } ,从而导致重定向错误。因此代码如下:

Controller.class

/

在测试过程中查看网络跟踪时,可以看到Location标头设置正确。 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); ,但是当它进行重定向时,URL变成https://www.google.com?error_code=001&description=System+Error,从而使那些queryparams成为路径URI。有什么方法可以阻止它执行此操作,这意味着这些值未正确设置为params。这是由于说明中的https://www.google.com/?error_code=SECB001&description=System+Error导致的,我应该对其进行编码吗?

1 个答案:

答案 0 :(得分:2)

您应该使用Spring的UriComponentsBuilder以编程方式构建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("/")