javascript - 从 javascript 访问 jenkins 远程 api,无需 JSONP

标签 javascript jenkins jsonp remote-access

我有一个 javascript 应用程序,它显示有关 jenkins 作业的信息。直到最近,我使用 JSONP 进行 ajax 调用来从 jenkins 检索数据(jenkins 和客户端位于不同的服务器上),但在最新的 jenkins 版本中,JSONP api 被禁用。

我读到Remote access API jenkins wiki 上的页面,但我仍然不知道如何从 javascript 做到这一点。我尝试使用基本的 http 身份验证(jenkins 使用 https),但没有成功。我也尝试使用 crumbissuer,但在日志中 jenkins 说 crumb 无效...

如何从 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
    })

我尝试类似地使用面包屑发行者:

$.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
    })

最佳答案

在 Java 中使用这些设置请求 header 对我有用。

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
    }

关于javascript - 从 javascript 访问 jenkins 远程 api,无需 JSONP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475173/

相关文章:

jenkins - 当 Jenkins 作业运行时间过长时如何触发警报?

java - 使用 JSONP 浏览 json,数字可以作为 JsonObject 返回吗?

javascript - Backbonejs 集合未填充,但 fetch 有效

javascript - 如何在测验应用程序中移至下一个或上一个问题?

javascript - 如何模拟或调用基本的 javascript 函数?

javascript - 设置文本区域的高度自动导致滚动

java - 如何在果冻中实现无选择 <f :select/>?

tomcat - 将 "versioned"war 文件从 Jenkins 重新部署到 Tomcat 失败

javascript - PHP json_decode 不适用于对象 GET 变量

javascript - 如何在在线网页中突出显示文本