Попытка создать проект в MS Project Server 2013 из Java с использованием REST

Я пытаюсь создать новые проекты в Microsoft Project Server 2013 из java-приложения, используя REST API Project Server 2013, но у меня возникают проблемы.

Я могу успешно получить файл atom+xml всех проектов, используя следующее (GET):

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();
}

Однако я получаю статус = 403, причина = ЗАПРЕЩЕНО, когда пытаюсь выполнить POST, используя следующее:

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 (Project Center) напрямую, но мне нужно иметь возможность делать это программно из моего приложения Java.

Я пытался (и потерпел неудачу) использовать WSDL (например, http://servername/PWA/_vti_bin/psi/project.asmx?wsdl), которые поставляются с Project Server, но когда я использовал Axis2 для создания кода Java, сгенерированный Java-код не может обработать ответы, отправленные обратно с Project Server. Ответ от Project Server будет включать diffgr:diffgram, и, по-видимому, все, что мне действительно нужно, содержится в нем. Кроме того, ответ включал дополнительный элемент для проекта (PROJ_LAST_CHANGE_TOKEN), которого не было в WSDL.

Я также пробовал код C#, включенный в SDK Microsoft Project 2013, но большинство файлов, которые я пробовал, либо не компилировались, либо не работали как есть. Я прочитал несколько форумов, на которых упоминается, что страницы справки веб-сайта Microsoft и пример кода для 2013 года могли быть скопированы из Project Server 2010, но, хотя фактические API-интерфейсы изменились между 2010 и 2013 годами, пример кода и веб-сайты MSDN не были обновлены.

Кому-нибудь удалось создать новые проекты, а затем добавить новые задачи в существующий проект в Project Server 2013 с Java?

Спасибо


person rrudland    schedule 08.11.2013    source источник
comment
Привет, откуда у тебя REST API? это JAR?   -  person iCode    schedule 12.12.2013
comment
Здравствуйте, я пытаюсь использовать код первого фрагмента, чтобы получить все проекты с сервера проектов с URL-адресом https, и получаю ответ 403. Есть ли другая реализация при доступе к серверу проекта с URL-адресом https, вы когда-нибудь пробовали что-то подобное?   -  person jkonst    schedule 17.04.2015


Ответы (1)


JSON должен выглядеть так:

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

Идентификатор — это ваш собственный сгенерированный GUID. Идентификатор типа корпоративного проекта берется из идентификаторов типа проекта вашей фермы.

person Chris Givens    schedule 27.12.2013
comment
Есть ли какая-либо документация для этих полезных нагрузок? В официальной документации MS Project Server 2013 упоминаются только методы HTTP, но ничего не говорится о том, как должны выглядеть полезные нагрузки. - person Gunnar; 22.10.2015