【问题标题】:Trying to create Project within MS Project Server 2013 from Java using REST尝试使用 REST 从 Java 在 MS Project Server 2013 中创建项目
【发布时间】:2013-11-08 22:51:38
【问题描述】:

我正在尝试使用 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 中的现有项目中?

谢谢

【问题讨论】:

  • 您好,您从哪里获得 REST API?它是一个 JAR 吗?
  • 您好,我正在尝试使用第一个 sn-p 的代码从具有 https url 的项目服务器获取所有项目,我收到 403 响应。使用 https url 访问项目服务器时是否有不同的实现,你有没有尝试过这样的事情?

标签: java rest ms-project-server-2013


【解决方案1】:

JSON 应该如下所示:

{
  'parameters' : {
    'Id':'e19281cf-e8c8-4dfa-879c-75b8b3619426',
    'EnterpriseProjectTypeId':'09fa52b4-059b-4527-926e-99f9be96437a',
    'Name':'Test',
    'Description':'Test',
    'Start':'12/27/2013'
  }
}

ID 是您自己生成的 GUID。企业项目类型 ID 来自您场的项目类型 ID。

【讨论】:

  • 这些有效载荷是否有任何文档?官方的 MS Project Server 2013 文档只提到了 HTTP 方法,但没有提到有效负载的外观。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多