web-dev-qa-db-ja.com

Alamofire GetリクエストとJSONレスポンス

Yoda API を使用して Alamofire Swift Frameworkを使用してリクエストを送信しようとしています。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ステートメント。デバッグ用です。

これは単なる概念実証コードであり、意図的に多くのエラーチェックを行わないため、そのためかなり美しくありません。あなたが何か提案があれば、私はそれらに感謝します。

8

なんらかの理由で、JSONのAlamofireリクエストでも私が抱えている問題です。それは私が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をより簡単に管理することを強くお勧めします。

これがお役に立てば幸いです。

6
Victor Sigler

Alamofireリクエストには、レスポンスを処理するためのいくつかのメソッドがあります。データレスポンスを処理して文字列に変換してみてください。応答JSONが正常であることを確認します。

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

また、JSONデータの解析中のチェックアウトエラー。

6
Gralex