Spring中的其余模板如何处理在请求参数中包含哈希的get请求url

时间:2019-02-11 23:57:21

标签: java spring spring-boot httprequest

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

传递的请求网址:

  

https://localhost:8080/v3/getdata?problemType=Netting&equipmentType=All%20refrigeration&problemCode=Damaged%20upright%20Please%20refer%20to%20Spec%20%2313300&locationId=2005511287

响应:

{
   "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());
  }

错误

  

2019-02-11 15:26:25.900错误14328-[nio-8080-exec-9] oaccC [。[。[/]。[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.RestTemplate.handleResponse(RestTemplate.java:777)〜[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE]       在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735)〜[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE]       在org.springframework.web.client.RestTemplate.execute(RestTemplate.java:669)〜[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE]       在org.springframework.web.client.RestTemplate.exchange(RestTemplate.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]

1 个答案:

答案 0 :(得分:0)

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

如果您有其他方法可以使其正常运行,请发帖。

CarImages