#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. Спасибо, приятель, весь день вырывал у меня волосы!!!!