**
调用Jenkins api报错 403 forbidden
**
String url = url + "/computer/doCreateItem?name=test&type=hudson.slaves.DumbSlave";HttpHeaders headers = new HttpHeaders();MultiVpalueMap<String, String> parameters= new LinkedMultiValueMap<>();parameters.add("json", nodeInfo.toJnSONString());headers.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE);HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(parameters, headers);restTemplate.postForEntity(url, requestEntity, String.class, null);
上面代码是调用jenkins api创建jenkins node,代码中json是post请求发送的node配置的参数body,格式如下:
{"name":"","nodeDescription":"","numExecutors":"1","remoteFS":"C:\\JenkinsNode","labelString":"","mode":"NORMAL","":["hudson.slaves.JNLPLauncher","hudson.slaves.RetentionStrategy$Always"],"launcher":{"stapler-class":"hudson.slaves.JNLPLauncher","$class":"hudson.slaves.JNLPLauncher","workDirSettings":{"disabled":false,"workDirPath":"","internalDir":"remoting","failIfWorkDirIsMissing":false},"webSocket":false,"tunnel":"xx.xxx.xxx.xxx:","vmargs":""},"retentionStrategy":{"stapler-class":"hudson.slaves.RetentionStrategy$Always","$class":"hudson.slaves.RetentionStrategy$Always"},"nodeProperties":{"stapler-class-bag":"true","hudson-tools-ToolLocationNodeProperty":{"locations":{"key":"hudson.plugins.git.GitTool$DescriptorImpl@Git","home":"C:\\Program Files\\Git\\cmd\\git.exe"}}},"type":"hudson.slaves.DumbSlave","Jenkins-Crumb":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
当我们执行的时候,直接用new RestTemplate()去调用的话,会报403 forbidden, 这个时候需要在restTemplate中加入一个带jenkins api token的拦截器,如下所示:
private void getAuthentications() {restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor(username, apiToken));}
怎样获取apiToken呢?如下所示:
点击右上角登录人名,然后点击左边导航栏里的Configure,在API Token里面新生成token即可。