我有一个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
导致的,我应该对其进行编码吗?
答案 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("/")
。