Alamofire获取请求和JSON响应

时间:2015-04-14 18:55:46

标签: ios json swift alamofire

我正在尝试使用Yoda API并使用Alamofire Swift框架发送请求。我知道API正常工作,因为我已经多次使用我的Mashape API密钥测试了端点。我还可以看到请求正在发送(Mashape的主页在我的申请下)。但是我的JSON响应总是nil

func handleRequest(words:String){
        var saying = words.stringByReplacingOccurrencesOfString(" ", withString: "+");
        saying = "?sentence=" + saying;
        let url = NSURL(string: (baseURL+saying));
        println(url);
        var response:String;
        Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = additionalHeaders;
        Alamofire.request(.GET, url!).responseJSON { (_, _, JSON, _) in
            println(JSON);

        }
    }

单词字符串可以是“这是我的第一句话”,它将根据API规范自动用“+”替换空格。 请忽略多个println语句,它们仅用于调试。

这只是概念代码的证明,它故意没有做太多的错误检查,因此并不是很好。如果您有任何建议我会很感激。

2 个答案:

答案 0 :(得分:6)

Alamofire请求有几种处理响应的方法。尝试处理数据响应并将其转换为String。确认响应JSON正常。

Alamofire.request(.GET, url!).response { (_, _, data, error) in
    let str = NSString(data: data, encoding: NSUTF8StringEncoding)
    println(str)
    println(error)
}

解析JSON数据时也会检出错误。

答案 1 :(得分:6)

出于某种原因,我对Alamofire的JSON请求也是一个问题。这是我使用Alamofire处理JSON请求的方式:

Alamofire.request(.GET, urlTo, parameters: nil, encoding: .URL).responseString(completionHandler: {
        (request: NSURLRequest, response: NSHTTPURLResponse?, responseBody: String?, error: NSError?) -> Void in

        // Convert the response to NSData to handle with SwiftyJSON
        if let data = (responseBody as NSString).dataUsingEncoding(NSUTF8StringEncoding) {
            let json = JSON(data: data)
            println(json)
        }
})

我强烈建议您使用SwiftyJSON以更好,更简单的方式管理JSON,这取决于您。

我希望这对你有所帮助。