Domino REST POST不适用于约会 - 注意未找到项目

时间:2014-02-14 17:21:46

标签: javascript ajax rest lotus-domino

我正在编写一个客户端JS应用程序,我在使用Domino服务器的REST接口(带有OSGi扩展的版本8.5.3)时遇到了一些问题,GET部分可以工作,但我遇到POST问题,请参阅下面的代码。这会在我点击它时在Domino / Notes中创建一个文档,我会收到以下消息

  • 注意项目未找到

  • tmpStartTime_Local:运算符的数据类型不正确或@Function时间/预期日期

然后我尝试填写所有可以创建文档的“tmp”时间字段,但它也不正确。我也尝试使用“通知”而不是再次使用预约表格。

当我在Notes中打开文档时,它说它是一个议程项目,但不是会议,而且它反复出现,但它不是。它出现在“所有文档”中,但不出现在日历或资源预留中。我认为要么是我没有为约会文件设置正确的值,要么我没有给任何想法如何纠正正确的服务?

       function postREST()
        {
            var msg=
            {
                "Subject":"TEST C3",
                "Body":"The date/time variant is basically just a floating-point number with the date as the integer part and the time as the fractional part. It can be freely converted back and forth to a Double, without losing information.",

                 "$PublicAccess":"1",
                 "$BusyName":"CN=Administrator/O=acme",
                 "$BusyPriority":"1",
                 "$ApprovalList":"CN=Administrator/O=acme",
                 "$CSFlags":"uw",
                 "$CSCopyItems":["Room"],
                 "$Programmatically": "1",
                 "ExcludeFromView":  ["D","S" ],


                 "MailOptions":"0",
                 "AllowBusyAccess":"",
                 "NoticeType" : "I",
                 "AutoProcessType":"0",
                 "AutoProcessUserList":"Administrator",
                 "Room":"Room2\/ZAC Atalante champeaux@acme",
                 "AppointmentType":"3",   // 0 = Appointment   3 Meeting
                 "Form":"Appointment",
                  "_ViewIcon":158,     // Meeting

                "Repeats":"",       // doesn't appear to do much
                "Chair":"CN=Administrator\/O=acme",
                "Principal":"CN=Administrator\/O=acme",
                "From":"CN=Administrator\/O=acme",
                //"From":"CN=Administrator",
                "AltChair":"CN=Administrator\/O=acme",
                "SequenceNum":1,
                "OrgTable":"C0",        // Calendar entry 0 => first Calendar
                "Logo":"StdNotesLtr25",
                "StartTime":"10:00:00",
                "StartDate":"2014-02-17",
                "EndTime":"11:00:00",
                "EndDate":"2014-02-17",

                "CalendarDateTime":"2014-02-17T09:00:00Z",
                "StartTimeZone":"Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=68$ZN=Romance",
                "EndTimeZone":"Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=68$ZN=Romance",
                "WhiteBoardContent":
                {
                    "type":"multipart",
                    "content":        [
                      {
                       "contentType":"text\/html; charset=US-ASCII",
                        "contentDisposition":"inline",
                        "data":"<html><body>HELLO WORLD<\/body><\/html>\r\n\r\n"
                      }
                    ]
                },
            }

          try {
          var Amsg = JSON.stringify(msg);
            }
          catch (err) {
                 log(": Exception:"+ err); 
               }

          var url = "http://99.99.99.99/mail/administ.nsf/api/data/documents?form=Appointment";

         var username = "admin";
         var password = "pwd";
            try{  

                xhr = new XMLHttpRequest();
                xhr.addEventListener("loadstart", function(evt) { //log("loadstart");log(evt); 
                                                        }, false);
                xhr.addEventListener("progress", function(evt) 
                               { //log("progress");log(evt); 
                               }, false);
                xhr.addEventListener("error", function(evt) { 
            error("xmlhttprequest ERROR");
                      log("ERROR readyState : " + this.readyState + "  status : " + this.status + "  "  + this.statusText);
                   log("ERROR responseText  : " + this.responseText);
                      log("ERROR responseXML  : " + this.responseXML);

          error(evt); }, false);

              xhr.addEventListener("abort", function(evt) { error("abort"); error(evt); }, false);
              xhr.addEventListener("load", function(evt) { //log("load");log(evt); 
                                                  }, false);

              xhr.addEventListener("loadend", function(evt) { 
            log("loadend ANSWER : readyState : " + this.readyState + "  status : " + this.status);
                      postReturn(this.responseText);
          }, false);

             xhr.open("POST", url, true, username, password);
             xhr.setRequestHeader("Content-Type", "application/json");
             xhr.send(msg);
                        }
  catch(err) {
         log(": Exception:"+ err); 
       }

}

2 个答案:

答案 0 :(得分:1)

对于Domino 8.5.3,数据服务是唯一可用的REST服务。

在Domino 9.0中它变得更好。这使您可以选择使用OpenNTF中的扩展库来安装the Domino calendar service。日历服务更适合您的用例。它不需要深入了解Notes C&amp; S架构,并在您创建,更新和删除事件时自动处理调度工作流程。

此外,日历服务内置于Domino 9.0.1中。所以9.0.1甚至不需要单独的扩展库安装。

但是,假设您受限于8.5.3和数据服务,我知道是什么导致“运算符的数据类型不正确”错误。您的JSON输入将每个数据/时间项定义为纯字符串。您可能会有更好的结果声明数据类型如下:

"CalendarDateTime": {
  "data": "2014-02-17T18:00:00Z",
  "type": "datetime"
}

因此,您可以尝试明确声明每个日期/时间项的数据类型,但我个人从未尝试使用数据服务创建日历事件。即使你遇到这个错误,我也想知道未来是否会有更多问题。

答案 1 :(得分:0)

您缺少至少两个项目:StartDateTime(Startdate和StartTime的组合)和EndDateTime(猜测...)。

查看Calendaring and Scheduling Schema以查找其他缺失项目。

此外,您可以检查文档中项目的数据类型(Alt - 在日历视图中输入文档),因为它们可能是文本类型。然后按照Dave的建议更改您的代码。