在Swift中通过Alamofire访问Domino Access Service时内容类型错误

时间:2015-04-06 07:00:13

标签: json rest xpages lotus-domino alamofire

我在使用swift中的Alamofire从Domino Access Service(9.0.1)访问REST API时遇到了一些麻烦。 我的代码如下:

    Alamofire.request(.GET, dbPath)
        .authenticate(usingCredential: credential)
        .responseViewCollectionArray { (request, response, viewWrapper, error) in
            println("res: \(response)")
            if let anError = error {
                println("error \(anError)")
                completionHandler(nil, anError)
                return
            }
            println("success atPath")
            completionHandler(viewWrapper, nil)
    }

结果是什么让我:

res:可选({URL:http://das.name.de/DASLib.nsf/api/data/collections} {状态代码:404,headers {     “Cache-Control”=“no-cache”;     连接=关闭;     “内容长度”= 220;     “Content-Type”=“ text / html; charset = US-ASCII ”;     Date =“Mon,06 Apr 2015 06:41:37 GMT”;     Expires =“Tue,01 Jan 1980 06:00:00 GMT”;     Server =“Lotus-Domino”; }}) error Error Domain = NSCocoaErrorDomain Code = 3840“操作无法完成。(Cocoa error 3840.)”(JSON文本没有以数组或对象开头,并且选项允许未设置片段。)UserInfo = 0x7fc911f01af0 {NSDebugDescription = JSON文本没有以数组或对象和选项开头,以允许未设置片段。}

所以内容类型错误,为什么我把它放入JSON(swiftyJSON)时出错。我可以使用responseString而不是Alamofire的responseJSON来查看“错误”的结果。现在奇怪的是。当我把终点放在像CocoaRestClient这样的休息客户端时,它给了我一个不同的内容类型

HTTP 200无错误

内容编码:gzip 内容长度:489 变化:接受编码 内容类型: application / json 服务器:Lotus-Domino 日期:太阳,2015年4月5日19:41:28 GMT

如果我使用相同的代码访问Domino-REST-API(例如服务器上的数据库)的其他部分(仅更改端点)。代码运行良好,我得到了JSON。

那我错过了什么?也许有人在Domino中通过xPages使用REST时遇到了同样的问题。

1 个答案:

答案 0 :(得分:1)

正如@muenzpraeger指出:你有一个404 - 没找到。假设资源确实存在,则指向配置错误。您很可能尚未通过DAS启用数据库或视图以进行访问。 我会非常小心DAS,一旦你允许WRITE访问任何可以访问URL并拥有作者或更好访问权限的人,可以回写任意文档并弄乱你的数据库(没有验证!)。

我正在研究一些替代方案(也会在404上返回JSON)。请继续关注