0

我无法弄清楚如何使用 API 更新 baseCamp 中的里程碑。我可以做其他所有事情(创建、完成、未完成和删除)。但我坚持更新。我不断收到 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);
}

根据 api,myURL 是正确的: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 对日历条目做任何事情。我似乎无法弄清楚更新。有任何想法吗?

4

1 回答 1

0

为了皮特的爱!!!!

尽管文档明确指出更新操作是 POST,但它实际上是 PUT。当糟糕的文档花费我数小时的时间时,我喜欢它。至少这可能会帮助那些有遵循指示的可怕习惯的任何人。

这是他们在http://developer.37signals.com/basecamp/calendar-entries.shtml上的文档

更新日历条目
POST /projects/#{project_id}/calendar_entries/#{id}.xml
修改日历条目。为“类型”提供不同的值可以将日历事件转换为里程碑,反之亦然。您可以使用它来更改单个里程碑的截止日期,也可以选择更改后续里程碑的截止日期

.

于 2011-11-03T04:16:53.840 回答