2016-02-23 1 views
0

У меня есть приложение 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, аутентификация происходит через пользовательское приложение (ключи и секрет).

+0

Отладить и выяснить значение 'result'. Кроме того, что такое тип данных, логика для получения значения для этой переменной? Его ясно видно из вашего кода, что вы могли бы поразить часть else, проверяя значение этой переменной. –

ответ

0

Может быть, результат приходит как ложный. Проверьте, что является причиной для значения результата «false».

+0

Спасибо за ответ. Я уже обновил цикл else с другим статусом http и все еще получил тот же ответ 400. Проблема в том, что я даже не вижу запроса, приходящего на этот метод. У меня есть несколько операторов журналов, и они не печатаются в журналах. Благодарю. – user115391

Смежные вопросы