[英]How the get request url which has hash in the request param is handled by the rest template in Spring
我沒有得到下面提到的請求 url 的響應,盡管 url 和 param 值是正確的。 僅供參考,請求參數值中有一個哈希符號,我正在從客戶端對其進行編碼,以便請求不會被截斷。 響應是狀態 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());
}
錯誤
2019-02-11 15:26:25.900 ERROR 14328 --- [nio-8080-exec-9] oaccC[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] 在上下文中路徑[]拋出異常[請求處理失敗; 嵌套異常是 org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request] 的根本原因
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request at 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]
使用 URI 類再次編碼 # 字符並轉換為字符串,如下所示。 有效。
請張貼,如果您有任何不同的方法使其工作。
String completeURL = scBaseURL+"/"+scBasePath;
URI uri = URI.create(completeURL.replace(" ","%20").replace("#","%23"));
System.out.println(uri.toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.