У меня есть приложение mvc Spring, и у меня также есть службы отдыха для некоторых функций. Он работал нормально до прошлой недели, но неожиданно некоторые из вызовов имеют проблемы.Весна MVC службы отдыха 400 плохой запрос для некоторых звонков
Я заметил, что все эти вызовы имеют функции типа "method = RequestMethod.PUT". Я получаю следующее сообщение об ошибке
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:614)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:570)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530)
at org.springframework.web.client.RestTemplate.put(RestTemplate.java:382)
Мой контроллер
@Controller
@RequestMapping("user/a2")
public class ABCController {
@Autowired
private ABCServices ABCServices;
@RequestMapping(
value = "user/{userName}/checkTest",
method = {RequestMethod.GET, RequestMethod.POST} -----------------this call works fine
)
public @ResponseBody
String check(@PathVariable String userName) {
}
@RequestMapping(
value = "user/{userName}/validateABCSS",
method = RequestMethod.PUT
)
public @ResponseBody
ResponseEntity<byte[]> validateABCSS(@PathVariable String userName, @RequestBody AAA uSS) {
-----------------this call does not work
if ("Success".equals(result)) {
return new ResponseEntity<byte[]>(HttpStatus.OK);
} else {
return new ResponseEntity<byte[]>(result.getBytes(), HttpStatus.BAD_REQUEST);
}
}
}
RestClient.java,
public class RestClient {
private RestTemplate restTemplate;
private String UN;
private String serverUrl;
public RestClient() {
restTemplate = new RestTemplate();
}
public RestClient(String pServerUrl, String key, String sec, String pUN) {
ClientHttpRequestInterceptor tokenAuthInterceptor = new TokenAuthHeaderRequestInterceptor(key,sec, pUN);
restTemplate.setInterceptors(Collections.singletonList(tokenAuthInterceptor));
SSLContext sslContext = null;
try {
sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).useTLS().build();
} catch (Exception e) {
}
SSLConnectionSocketFactory connectionFactory = new SSLConnectionSocketFactory(sslContext,
new String[]{"SSLv2Hello","SSLv3", "TLSv1"}, null, new AllowAllHostnameVerifier());
HttpClient httpClient =
HttpClientBuilder.create().setSSLSocketFactory(connectionFactory).build();
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
restTemplate.setRequestFactory(requestFactory);
}
public enum ServiceURLs {
VALIDATE_ABCSS("user/a2/user/{userName}/validateABCSS"), CheckTest("user/a2/user/{userName}/checkTest");
private String id;
private String url;
private ServiceURLs(String id) {
this.id = id;
this.url = id;
}
private ServiceURLs(String id, String url) {
this.id = id;
this.url = url;
}
public String getId() {
return this.id;
}
public String getUrl() {
return this.url;
}
}
public RestTemplate getRestTemplate() {
return this.restTemplate;
}
}
Я называю шаблон, как показано ниже
getRestTemplate().put(serverUrl + RestClient.ServiceURLs.VALIDATE_ABCSS.getUrl(), pObject, getLogin()).
Единственное, что я это было для конфигурации SSL, но теперь cha привязали их к старому состоянию (хотя хранилища ключей имеют ключи). Я даже использую URLS только с http. Любая помощь оценивается. Благодарю.
Установка: мое приложение находится в tomcat, приложение для служб отдыха находится в weblogic, аутентификация происходит через пользовательское приложение (ключи и секрет).
Отладить и выяснить значение 'result'. Кроме того, что такое тип данных, логика для получения значения для этой переменной? Его ясно видно из вашего кода, что вы могли бы поразить часть else, проверяя значение этой переменной. –