#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’ может преобразовать событие календаря в веху и наоборот. Вы можете использовать это, чтобы сдвинуть крайний срок для одной вехи, а также, при необходимости, сдвинуть крайние сроки для последующих этапов
.