2017-01-24 6 views
0

Я пытаюсь использовать действие markDone для объекта задачи. Я предполагаю, что это PUT, но я попробовал POST. Мне еще нужно попробовать GET с параметром PUT или POST, который я попробую сделать дальше. Однако я бы предпочел не идти по этому маршруту. Я довольно новичок в веб-API, и это моя первая попытка написать API, который говорит с другим API, чтобы он мог играть в эту проблему. Я использую объект HttpClient и пробовал PostAsync и PutAsync. Ниже приводится то, что у меня есть.markDone on Task object

using (var apiManagementSystem = new HttpClient()) 
    { 
     apiManagementSystem.BaseAddress = new Uri("https://xxxxxxx.preview.workfront.com/attask/api/"); 
     apiManagementSystem.DefaultRequestHeaders.Clear(); 
     apiManagementSystem.DefaultRequestHeaders.Add("SessionID", "xxxxxxx"); 
     HttpContent httpContent = new StringContent("?ID=xxxxxxx&action=markDone&status=CPL"); 
     HttpResponseMessage responseMessage = apiManagementSystem.PutAsync("Task", httpContent).Result; 
    } 

Даже если вы не знаете, если приведенный выше код является правильным, может быть, вы знаете, что URL будет или заголовки должны быть.

ответ

0

Я постараюсь помочь здесь, но я в основном работаю в Python и Javascript/Node. Что касается маркировки задачи, выполненной с помощью действия, это будет PUT-вызов. Ниже приведен пример URL-адреса с использованием метода аутентификации ключа API. Для ключа сеанса вы просто переключиться на SESSIONID

https://xxx.attask-ondemand.com/attask/api/v6.0/task/582df5e700e6243a8656824931a495b7?apiKey=xxxxxxx&action=markDone 

UID, после того, как/задачи/это идентификационный номер задачи.

+0

Я только что закончил пытаюсь это, и это не работает для меня. Я получаю 400, и WorkFront возвращает сообщение No Assignment. Однако я могу сделать Get для моего идентификатора, и он возвращает мой объект. –

+0

Единственное, что я заметил, это ваш URL. Я пробовал domain/attask/api/task/xxxxx ..... и у вас есть domain/attask/api/v6.0. Я видел, как другие используют этот подход. Когда у моего URL-адреса нет версии, я получаю 400. Когда я нацелен на версию, я получаю 403 (запрещено) с той же ошибкой. Это заставляет меня думать, что мой запрос на URL-адрес без версии на самом деле является проблемой с разрешениями. Я предполагаю, что отказ от версии нацелен на самый последний api. Это верно? –

+0

еще одна вещь, которую я должен отметить, это то, что у меня есть объект HttpContent как null. Я знаю, что вы не работаете с C#, но я подумал, что я должен поставить его здесь на всякий случай, если это поможет вам или другим. –

0

Здесь C# код для выполнения этой операции

using (var apiManagementSystem = new HttpClient()) 
{ 
    apiManagementSystem.BaseAddress = new Uri("https://xxxxxxx.preview.workfront.com/attask/api/"); 
    apiManagementSystem.DefaultRequestHeaders.Clear(); 

    HttpContent httpContent = null; 
    responseMessage = apiManagementSystem.PutAsync("TASK/TASKIDxxx?action=markDone&apiKey=apikeyxxx", httpContent).Result; 

}