Как обрабатывается URL запроса get, который имеет хеш в параметре запроса, в шаблоне rest в Spring - PullRequest
0 голосов
/ 12 февраля 2019

Я не получаю ответ на указанный ниже URL-адрес запроса, хотя значения url и param верны.К вашему сведению, в значении параметра запроса есть хэш-символ, и я кодирую его со стороны клиента, чтобы запрос не был обрезан.Ответ имеет статус 500 и код ошибки 400 Bad Request.Не уверен, в чем проблема.

Запрошенный URL-адрес:

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.service () для сервлета [dispatcherServlet] в контексте с путем [] вызвала исключение [Ошибка обработки запроса;вложенное исключение - org.springframework.web.client.HttpClientErrorException $ BadRequest: 400 Bad Request] с коренной причиной

org.springframework.web.client.HttpClientErrorException $ BadRequest: 400 Bad Request на org.spr.client.HttpClientErrorException.create (HttpClientErrorException.java:79) ~ [spring-web-5.1.3.RELEASE.jar: 5.1.3.RELEASE] по адресу org.springframework.web.client.DefaultResponseErrorHandler.handava2RjEser_Reader.Reader.ReaderEler ()) ~ [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] at org.springframework.web.client.RestTemplate.execute (RestTemplate.java:669) ~ [весна-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) ~ [классы /: нет]

1 Ответ

0 голосов
/ 13 февраля 2019

Использовал URI Class для повторного кодирования символа # и преобразования в строку, как показано ниже.Это сработало.

Пожалуйста, напишите, если у вас есть какие-либо другие способы заставить его работать.

   String completeURL = scBaseURL+"/"+scBasePath;
   URI uri = URI.create(completeURL.replace(" ","%20").replace("#","%23"));
   System.out.println(uri.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...