Обновите веху, используя BaseCamp API и c#

#c# #basecamp

#c# #basecamp

Вопрос:

Я не могу понять, как обновить веху в baseCamp с помощью API. Я могу делать все остальное (создавать, завершать, завершать и удалять). Но я застрял на обновлении. Я продолжаю получать ошибку 406.

 HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(myURL);
_request.ContentType = "application/xml";
_request.Accept = "application/xml";
_request.Method = "POST";
_request.ServicePoint.Expect100Continue = false;
_request.Credentials = new NetworkCredential("xxxxMYKEYxxxx", "X");

byte[] byteData = UTF8Encoding.UTF8.GetBytes(RequestData);
_request.ContentLength = byteData.Length;
using (Stream stream = _request.GetRequestStream())
{
    stream.Write(byteData, 0, byteData.Length);
}
 

myURL корректен в соответствии с api: https://mycompany.basecamphq.com/projects/8040830/calendar_entries/20940505.xml

И данные моего запроса выглядят правильно:

 <request>
 <calendar-entry>
  <title>My New Milestone - Renamed</title>
  <type>Milestone</type>
 </calendar-entry>
</request>
 

Однако он всегда выдает ошибку «(406) неприемлемо» при

 _request.GetResponse();
 

Кто-нибудь видит что-нибудь вопиющее? Я новичок в новом REST api. Я могу делать все с записями календаря, используя API. Кажется, я просто не могу разобраться с обновлением. Есть идеи?

Ответ №1:

Ради любви к Питу!!!!!

Хотя в документации четко указано, что операция обновления является POST, на самом деле это PUT . Мне нравится, когда плохая документация отнимает у меня часы времени. По крайней мере, это может помочь любому из вас, у кого есть ужасная привычка следовать указаниям.

Вот их документация по адресу http://developer.37signals.com/basecamp/calendar-entries.shtml

Обновите запись календаря
POST /projects/#{project_id}/calendar_entries/#{id}.xml
Изменяет запись календаря. Предоставление другого значения для ‘type’ может преобразовать событие календаря в веху и наоборот. Вы можете использовать это, чтобы сдвинуть крайний срок для одной вехи, а также, при необходимости, сдвинуть крайние сроки для последующих этапов

.