Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alamofire Get Request and JSON Response

I'm trying to use the Yoda API and send a request using the Alamofire Swift framework. I know that the API is correctly working, as I have tested the endpoint with my Mashape API key multiple times. I can also see that the requests are being sent (homepage of Mashape under my application). However my JSON response is always 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);

        }
    }

The words string can be "This is my first sentence" and it will automatically replace the spaces with "+" as per the API spec. Please Ignore the multiple println statements, they are just for debugging.

This is just proof of concept code, its purposely not doing much error checking and isn't pretty for that reason. If you have any suggestions I would appreciate them.

like image 798
Patrick Zawadzki Avatar asked Apr 14 '15 18:04

Patrick Zawadzki


People also ask

How do I parse JSON response from Alamofire API in Swift?

To parse the response in Alamofire API request, we will use JSONDecoder, which is an object that decodes instances of a data type from JSON objects. The decode method of JSONDecoder is used to decode the JSON response. It returns the value of the type we specify, decoded from a JSON object.

What is the advantage of Alamofire?

Advantages of Using AlamofireUsing Alamofire will give a cleaner project. API call interactions (POST/GET/PUT/etc.) will be easier and more understable. Alamofire simplifies a number of common networking tasks that makes development faster and easier.


2 Answers

For some reason it's an issue I've too with the Alamofire request for JSON. It is the way I handle the JSON requests using Alamofire :

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)
        }
})

I strongly recommend you using SwiftyJSON to manage the JSON in a better and easy way, it's up to you.

I hope this help you.

like image 192
Victor Sigler Avatar answered Oct 13 '22 15:10

Victor Sigler


Alamofire request have several method for handle response. Try to handle data response and convert it to String. Confirm that response JSON is normal.

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

Also checkout error while parsing JSON data.

like image 26
Gralex Avatar answered Oct 13 '22 16:10

Gralex