java - 如何从 Java Team Server 检索所有项目区域?

标签 java authentication rest jazz

我安装了本地 Java Team Server,版本 3.0.1。我正在尝试使用 REST Web 服务来检索所有项目区域。为此,我首先验证了自己的身份:

public HttpContext login() throws ClientProtocolException, IOException {

        client = new DefaultHttpClient();
        CookieStore cookieStore = new BasicCookieStore();
        HttpContext localContext = new BasicHttpContext();

        localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

        HttpGet httpGetID = new HttpGet("https://localhost:9443/ccm/authenticated/identity");
        client.execute(httpGetID, localContext);
        httpGetID.abort();

        List<Cookie> cookies1 = cookieStore.getCookies();
        for (Cookie cookie : cookies1) {
            System.out.println("\t"+cookie.getName()+" : "+cookie.getValue());
        }

        List<NameValuePair> authFormParams = new ArrayList<NameValuePair>();
        authFormParams.add(new BasicNameValuePair("j_username", "ADMIN"));
        authFormParams.add(new BasicNameValuePair("j_password", "ADMIN"));

        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(authFormParams, "UTF-8");
        HttpPost httpPostAuth = new HttpPost("https://localhost:9443/ccm/authenticated/j_security_check");
        httpPostAuth.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        httpPostAuth.setEntity(entity);
        client.execute(httpPostAuth, localContext);
        //httpPostAuth.abort();

        List<Cookie> cookies2 = cookieStore.getCookies();
        for (Cookie cookie : cookies2) {
            System.out.println("\t"+cookie.getName()+" : "+cookie.getValue());
        }

        return localContext;
    }

然后我尝试使用以下代码获取项目区域:

HttpGet getProjectsRequest = new HttpGet("https://localhost:9443/ccm/oslc-scm/catalog");
        getProjectsRequest.addHeader("Content-Type", "application/xml;charset=UTF-8");
        getProjectsRequest.addHeader("Accept-Charset", "UTF-8");
        getProjectsRequest.addHeader("Accept", "application/x-oslc-cm-change-request+xml");

        ResponseHandler<String> handler = new BasicResponseHandler();
        String projectResponse = client.execute(getProjectsRequest, handler, localContext);
        System.out.println(projectResponse);

不幸的是,答案总是相同的:

{
    "userId": "ADMIN",
    "roles": [
        "JazzUsers",
        "JazzProjectAdmins",
        "JazzAdmins"]
}

这对我来说就像一个 JSON 对象。相反,我应该获取一个 XML 文档,其中列出了所有项目。我已经使用 Firefox 的 REST 插件尝试了相同的 REST 服务。在那里我得到了预期的 XML 文档。但是,我看不出我的代码和我在插件中所做的事情之间有任何差异。

最佳答案

你可以找到答案here .

这是我的理解:基本上,您需要访问另一个页面来接收 cookie,然后运行您的查询。只需运行相同的执行两次,您就会明白我的意思。

关于java - 如何从 Java Team Server 检索所有项目区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727022/

相关文章:

java - 如何检查txt文件是否是base64编码的

Java环境依赖编译

java - 如何在我的应用程序中使用 Scene Builder Dark Theme

c++ - 使用 Libcurl 将非常大的字符串发送到使用 REST API 的服务器?

java - 使用 restAssured 测试 Spring Boot Rest 应用程序

java - 计算数组列表的平均值?

reactjs - 当 session (存储的cookie)不可访问时如何保护 react 路由?

javascript - AngularJS 和 Firebase auth ngShow 和 ngClick 延迟?

asp.net-mvc - SignalR - 使用 Windows 和匿名身份验证时连接 ID 的格式不正确

php - 如何使用 CSRF token 发布到 Laravel API?