HttpResponseException:在试图通过java调用jenkins中的create job时被禁止

HttpResponseException:在试图通过java调用jenkins中的create job时被禁止,java,jenkins,jenkins-plugins,java-client,Java,Jenkins,Jenkins Plugins,Java Client,我正在使用此maven库连接到Jenkins: <dependency> <groupId>com.offbytwo.jenkins</groupId> <artifactId>jenkins-client</artifactId> <version>0.3.8</version> </dependency> config.xml: <?xml version="1.0" enco

我正在使用此maven库连接到Jenkins:

<dependency>
  <groupId>com.offbytwo.jenkins</groupId>
  <artifactId>jenkins-client</artifactId>
  <version>0.3.8</version>
</dependency>
config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <actions />
    <description>test job from java api</description>
    <keepDependencies>false</keepDependencies>
    <properties />
    <scm class="hudson.scm.NullSCM" />
    <canRoam>true</canRoam>
    <disabled>false</disabled>
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
    <triggers />
    <concurrentBuild>false</concurrentBuild>
    <builders />
    <publishers />
    <buildWrappers />
    <crumb>xxxxxxx</crumb>
    <crumbRequestField>Jenkins-Crumb</crumbRequestField>
</project>
调用getJobXml()时,我也遇到异常:


我很晚才回答你的问题。但发布此消息是为了帮助他人

我花了两个多的时间研究这个问题,但最终还是用Jenkins客户端创建了Jenkins作业。为了测试这一点,我编写了一个简单的Spring Boot
CommandLineRunner
程序,从
main()
调用

jenkinserver-jenkins=新的jenkinserver(新的URI(“http://localhost:6565/“管理员”、“管理员”);
Map jobs=jenkins.getJobs();
System.out.println(“调用运行方法”+jenkins.getJob(“bp-jenkins1”);
createJob(“JobOffByTwo”,getConfigXML(),true);
`

String getConfigXML()
方法返回在Jenkins中创建作业所需的示例config.xml内联xml

我希望这会有帮助

try {

            jServer.createJob("test-job", "src/main/resources/config.xml", true);
        } catch (Exception e) {
            e.printStackTrace();
        }
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <actions />
    <description>test job from java api</description>
    <keepDependencies>false</keepDependencies>
    <properties />
    <scm class="hudson.scm.NullSCM" />
    <canRoam>true</canRoam>
    <disabled>false</disabled>
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
    <triggers />
    <concurrentBuild>false</concurrentBuild>
    <builders />
    <publishers />
    <buildWrappers />
    <crumb>xxxxxxx</crumb>
    <crumbRequestField>Jenkins-Crumb</crumbRequestField>
</project>
org.apache.http.client.HttpResponseException: Forbidden
    at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
    at com.offbytwo.jenkins.client.JenkinsHttpClient.post_xml(JenkinsHttpClient.java:375)
    at com.offbytwo.jenkins.JenkinsServer.createJob(JenkinsServer.java:389)
    at com.offbytwo.jenkins.JenkinsServer.createJob(JenkinsServer.java:359)
    at com.xxx.App.main(App.java:34)
Exception in thread "main" org.apache.http.client.HttpResponseException: Forbidden
    at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
    at com.offbytwo.jenkins.client.JenkinsHttpClient.get(JenkinsHttpClient.java:171)
    at com.offbytwo.jenkins.JenkinsServer.getJobXml(JenkinsServer.java:515)
    at com.offbytwo.jenkins.JenkinsServer.getJobXml(JenkinsServer.java:503)
   JenkinsServer jenkins = new JenkinsServer(new URI("http://localhost:6565/"), "admin", "admin");
    Map<String, Job> jobs = jenkins.getJobs();
    
    System.out.println("Calling run method " + jenkins.getJob("bp-jenkins1"));
    
    jenkins.createJob("JobOffByTwo", getConfigXML(), true);