我有一个javascript应用程序,显示有关jenkins作业的信息。直到最近我使用JSONP的ajax调用来从jenkins中检索数据(jenkins和客户端在不同的服务器上),但在最新的jenkins版本中,JSONP api被禁用。
我在jenkins wiki上阅读了Remote access API页面,但我仍然不知道如何从javascript中做到这一点。我尝试使用基本的http身份验证(jenkins使用https)没有运气。我也尝试使用crumbissuer,但在日志中jenkins说碎屑是无效的......
如何从javascript使用jenkins远程api?感谢。
修改
我尝试了这样的http身份验证(我没有确切的代码):
$.ajax({
dataType : "json",
url : jenkinsURL + "/job/" + jenkinsJob + "/api/json?tree=name,url,color",
beforeSend : function(xhr) {
xhr.setRequestHeader("authorization", "Basic " + Base64.encode(username + ":" + password);
}
})
.done(function(data) {
// process data
})
我试着类似地使用crumb发行者:
$.ajax({
dataType : "json",
url : jenkinsURL + "/job/" + jenkinsJob + "/api/json?tree=name,url,color",
beforeSend : function(xhr) {
xhr.setRequestHeader(".crumb", "<received crumb>");
}
})
.done(function(data) {
// process data
})
答案 0 :(得分:0)
使用Java为我设置请求标头。
URL url = new URL(JenkinsURL);
HttpURLConnection xhr= (HttpURLConnection) url
.openConnection();
xhr.setRequestMethod("GET");
xhr.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20130401 Firefox/31.0");
xhr.setRequestProperty("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
xhr.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
xhr.setRequestHeader("Authorization", "Basic " + Base64.encode(username + ":" + password);
xhr.setRequestProperty("Connection", "Keep-Alive");
xhr.setAllowUserInteraction(true);
xhr.setDoOutput(true);
xhr.connect();
System.out.println(xhr.getResponseCode());// Hack to run the request if it wasnt run
BufferedReader br = new BufferedReader(new InputStreamReader(xhr.getInputStream()));
String output;
while ((output = br.readLine()) != null) {
//some code
}