Получение «400 Эта страница ожидает отправки формы» при выполнении вызова rest для запуска задания Дженкинса

#java #spring #jenkins #resttemplate #rest-client

#java #spring #дженкинс #resttemplate #rest-клиент

Вопрос:

Мне нужно запустить задание Дженкинса из моего Java-кода.Jenkins API ожидает тип содержимого, закодированный в application / x-www-form-url, и я могу запустить задание (используя базовую аутентификацию) из Postman Rest Client.Однако, когда я пытаюсь сделать то же самое из своего Java-кода, я получаю это исключение — HttpClientErrorException: 400 Эта страница ожидает отправки формы:

 Exception while triggerring jenkins {} 400 This page expects a form submission
org.springframework.web.client.HttpClientErrorException: 400 This page expects a form submission
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:108)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:708)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:661)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:621)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:539)
  

Я использую RestTemplate для вызова API.Я установил заголовок типа содержимого:

 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
  

и задайте параметры формы на карте

 MultiValueMap<String, String> map = new 
LinkedMultiValueMap<String, String>();
map.add("name", "value");
map.add("field2,"value");
map.add("json","a json string");
  

и запрос как:

 HttpEntity<MultiValueMap<String, String>> request = new 
HttpEntity<MultiValueMap<String, String>>(map, headers);
  

наконец, выполнение вызова как :

  ResponseEntity<String> response = 
    restTemplate.exchange(url,HttpMethod.POST, request, String.class);
  

Следует отметить, что ожидаемый ответ — это текст / html, который я хочу сохранить в строке и проанализировать, чтобы получить некоторые значения.

Комментарии:

1. Итак, как вы решили это?

Ответ №1:

У меня тоже была эта проблема. Наконец, я обнаружил, что если у вашего задания есть параметры, и вы вызываете /build , это вызывает 400 ошибку неправильного запроса. Вы должны вызвать /buildWithParameters , даже если все параметры имеют значения по умолчанию.

Комментарии:

1. Спасибо, приятель, весь день вырывал у меня волосы!!!!