我正在尝试使用 Project Server 2013 REST API 从 Java 应用程序在 Microsoft Project Server 2013 中创建新项目,但遇到了麻烦。
我可以使用以下 (GET) 成功获取所有项目的 atom+xml 文件:
String url = "http://<servername>/PWA/_api/ProjectServer/Projects";
HttpDigestAuthFilter filter = new HttpDigestAuthFilter("<username>", "<password>");
Client client = ClientBuilder.newClient(new ClientConfig());
client.register(filter);
WebTarget target = client.target(url);
Builder builder = target.request();
builder.accept(MediaType.APPLICATION_ATOM_XML);
InputStream inputStream = builder.get(InputStream.class);
try {
String body = IOUtils.toString(inputStream);
System.out.println("body : " + body);
} catch (IOException e) {
e.printStackTrace();
}
但是,当我尝试使用以下命令进行 POST 时,我收到 status=403, reason=FORBIDDEN :
String url = "http://<servername>/PWA/_api/ProjectServer/Projects";
HttpDigestAuthFilter filter = new HttpDigestAuthFilter("<username>", "<password>");
Client client = ClientBuilder.newClient(new ClientConfig());
client.register(filter);
WebTarget target = client.target(url);
Builder builder = target.request();
Form form = new Form();
form.param("Name", "Test Project");
form.param("Title", "Test Project");
form.param("Description", "My Test Project from Java");
builder.header("X-RequestDigest", "form digest value");
builder.header("X-HTTP-Method", "POST");
builder.accept("application/json;odata=verbose");
Response response = builder.post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
System.out.println(response.getStatus() + " : " + response.toString());
同一用户能够直接使用 Project Web App(项目中心)网站成功创建新项目,但我需要能够从我的 Java 应用程序以编程方式执行此操作。
我已经尝试(但失败了)使用 Project Server 附带的 WSDL(即 http://servername/PWA/_vti_bin/psi/project.asmx?wsdl),但是当我使用 Axis2 生成 Java 代码时,生成的java 代码无法处理从 Project Server 发回的响应。来自 Project Server 的响应将包括 diffgr:diffgram,显然,我真正需要的一切都在其中。此外,响应包括一个不在 WSDL 中的 Project (PROJ_LAST_CHANGE_TOKEN) 的额外元素。
我还尝试了 Microsoft Project 2013 SDK 中包含的 C# 代码,但我尝试的大多数文件要么无法编译,要么无法按原样工作。我读过几个论坛,其中提到 2013 年的 Microsoft 网站帮助页面和示例代码可能是从 Project Server 2010 复制的,但尽管实际 API 在 2010 年和 2013 年之间发生了变化,但示例代码和 MSDN 网站尚未更新。
有没有人能够成功地创建新项目,然后能够从 Java 向 Project Server 2013 中的现有项目添加新任务?
谢谢