Я пытаюсь создать новые проекты в Microsoft Project Server 2013 из приложения Java, используя API REST Project Server 2013, но у меня проблемы.Попытка создания проекта в MS Project Server 2013 с Java с использованием REST
Я могу успешно получить файл атом + 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, причины = FORBIDDEN, когда я пытаюсь делать 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, и, видимо, все, что мне действительно нужно, было в этом. Кроме того, ответ включал дополнительный элемент для Project (PROJ_LAST_CHANGE_TOKEN), который не был в WSDL.
Я также пробовал код C#, включенный в SDK Microsoft Project 2013, но большинство файлов, которые я пробовал, либо не будет компилироваться, либо не работает как есть. Я прочитал несколько форумов, в которых упоминается, что страницы справки веб-сайта Microsoft и пример кода на 2013 год, возможно, были скопированы из Project Server 2010, но хотя фактические API-интерфейсы изменились в период с 2010 по 2013 год, образцы кода и веб-сайты MSDN не были обновлены.
Сможет ли кто-нибудь успешно создавать новые проекты, а затем добавлять новые задачи в существующий проект на Project Server 2013 с Java?
Спасибо
Привет, откуда вы получили API REST? это JAR? – iCode
Здравствуйте, я пытаюсь выполнить код первого фрагмента, чтобы получить все проекты с сервера проекта с https-адресом, и я получаю ответ 403. Есть ли другая реализация при доступе к серверу проекта с https url, вы когда-нибудь пробовали что-то подобное? – jkonst