我在使用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时遇到了同样的问题。
答案 0 :(得分:1)
正如@muenzpraeger指出:你有一个404 - 没找到。假设资源确实存在,则指向配置错误。您很可能尚未通过DAS启用数据库或视图以进行访问。 我会非常小心DAS,一旦你允许WRITE访问任何可以访问URL并拥有作者或更好访问权限的人,可以回写任意文档并弄乱你的数据库(没有验证!)。
我正在研究一些替代方案(也会在404上返回JSON)。请继续关注