Jenkins API:java中的树过滤器问题

时间:2015-11-13 01:27:00

标签: java jenkins apache-commons-httpclient

我正在尝试使用以下代码

获取所有作业名称
$req = $_SERVER['REQUEST_URI'];
if (preg_match("/TEXT-IM-LOOKING-FOR/", $req))
{
 ...HTML HERE...
}

上面的代码没有返回任何json响应(只是一个空数组[]),但是如果我在url(http://myjenkins/api/json?depth=1)中删除了树查询,那么我会得到所有作业的json响应。

为什么带过滤器的查询没有返回任何结果? HttpClient或jenkins api有问题。

有人可以帮我解决这个问题。

由于

2 个答案:

答案 0 :(得分:1)

我建议您在浏览器中尝试使用该网址。我试着反对我的jenkins实例,它工作得很好。 此外,树查询中的第二个参数似乎是不必要的 - 即使这个url返回作业名称 - http://myjenkins/api/json?depth=1&tree=jobs[name]

答案 1 :(得分:0)

一些事情......

1)我尝试了我的浏览器,所有查询都运行良好,但不是通过java代码。原因是,在浏览器中已经登录(git oauth)并且所有查询都在java中工作,因为jenkins授权设置为不读取anonymus的作业(我以前没有检查过这个傻瓜)。

2)一旦设置了适当的权限,我仍然遇到URI编码问题,然后我使用了URI构建器

 URI uri = new URIBuilder().setScheme("http").setHost(jenkinsHost)
            .setPath("/api/json")
            .setParameter("depth", "1").setParameter("tree", "jobs[name,jobs[name]]")
            .build()
现在一切正常。