Повторите запрос curl для Jenkins в Java - PullRequest
0 голосов
/ 22 января 2019

Есть сотни подобных вопросов, но я не смог найти никакого рабочего ответа на мой вопрос.

С curl у меня есть рабочий запрос, ответ 201: created:

curl -i -X POST https://username:APITOKEN@jenkins-server/job/jobName/buildWithParameters?token=TOKEN -H "Jenkins-Crumb:xxxx"

Однако, если я пытаюсь повторить тот же запрос в Java, я получаю 403 No valid crumb was included in the request.CSRF активирован (с включенной поддержкой прокси-сервера).

Моя реализация Java (с использованием org.apache.httpcomponents: httpcore v.4.4.9):

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;

HttpClient client = HttpClients.createDefault();
String url = "https://username:" + apiToken + "@" + "jenkins-server/job/jobName/buildWithParameters?token=TOKEN";
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Jenkins-Crumb", "xxxx");
HttpResponse response = client.execute(httpPost);

Чего мне не хватает?

РЕДАКТИРОВАТЬ Я пробовал также и с другими библиотеками Java (Unirest, OkHttp), что привело к тому же коду ответа 403. Пробовал также с Python (библиотека запросов), где он работает как шарм:

requests.request("POST", "https://username:ApiToken@jenkins-server/job/jobname/buildWithParameters", data="", headers={"Jenkins-Crumb": "xxx"}, params={"token":"TOKEN"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...