Java Spring中的rest模板如何处理请求参数中包含哈希的get请求url

Java Spring中的rest模板如何处理请求参数中包含哈希的get请求url,java,spring,spring-boot,httprequest,Java,Spring,Spring Boot,Httprequest,我没有得到下面提到的请求url的响应,尽管url和参数值是正确的。仅供参考,请求参数值中有一个哈希符号,我正在从客户端对其进行编码,以便请求不会被截断。响应状态为500,错误代码为400错误请求。不知道是什么问题 已传递请求URL: 答复: { "timestamp": 1549916785930, "status": 500, "error": "Internal Server Error", "message": "400 Bad Request", "pat

我没有得到下面提到的请求url的响应,尽管url和参数值是正确的。仅供参考,请求参数值中有一个哈希符号,我正在从客户端对其进行编码,以便请求不会被截断。响应状态为500,错误代码为400错误请求。不知道是什么问题

已传递请求URL:

答复:

{
   "timestamp": 1549916785930,
   "status": 500,
   "error": "Internal Server Error",
   "message": "400 Bad Request",
   "path": "/v3/getdata"
 }
调用方法:

public String getData(String url) throws BusinessException {

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "Bearer " + getAuthenticateToken());
HttpEntity<String> entity = new HttpEntity<>(headers);
String completeURL = BaseURL+"/"+url;
logger.info(completeURL);
ResponseEntity<String> result = restTemplate.exchange(completeURL, HttpMethod.GET, entity, String.class);

System.out.println("Result:: "+result);
try {
    if ((result.getStatusCode() == HttpStatus.OK))
        return result.getBody();
} catch (Exception e) {
    e.printStackTrace();
}
throw new BusinessException(result.getStatusCodeValue(), 
  result.getBody());
  }
publicstringgetdata(stringurl)抛出BusinessException{
RestTemplate RestTemplate=新RestTemplate();
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set(“授权”、“承载人”+getAuthenticateToken());
HttpEntity=新的HttpEntity(标题);
字符串completeURL=BaseURL+“/”+url;
logger.info(completeURL);
ResponseEntity result=restemplate.exchange(completeURL,HttpMethod.GET,entity,String.class);
System.out.println(“结果::”+Result);
试一试{
if((result.getStatusCode()=HttpStatus.OK))
返回result.getBody();
}捕获(例外e){
e、 printStackTrace();
}
抛出新的BusinessException(result.getStatusCodeValue(),
result.getBody());
}
错误

2019-02-11 15:26:25.900错误14328---[nio-8080-exec-9]o.a.c.c.c.[/].[dispatcherServlet]:路径为[]的上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[请求处理失败;嵌套异常为org.springframework.web.client.HttpClientErrorException$BadRequest:400错误请求] 根本原因

org.springframework.web.client.HttpClientErrorException$BadRequest:400错误请求 在 org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.restemplate.handleResponse(restemplate.java:777)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.restemplate.doExecute(restemplate.java:735)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.restemplate.execute(restemplate.java:669)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在org.springframework.web.client.restemplate.exchange(restemplate.java:578)~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] 在com.walmart.fixit.ws.utils.utils.getDataFromSC(utils.java:118)~[classes/:na]


使用URI类再次对#字符进行编码并转换为字符串,如下所示

请张贴,如果你有任何不同的方式使其工作

   String completeURL = scBaseURL+"/"+scBasePath;
   URI uri = URI.create(completeURL.replace(" ","%20").replace("#","%23"));
   System.out.println(uri.toString());