Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting Header Response in Swift

I am following this answer for making HTTP calls in my swift project. How to make an HTTP request in Swift?

and following is the code I am using to make a synchronous call

let urlPath: String = "http://apiserver.com/api/login/?username=asdf&password=asdf"
            var url: NSURL = NSURL(string: urlPath)!
            var request1: NSURLRequest = NSURLRequest(URL: url)

            var response: AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil

            var error: NSErrorPointer = nil
            var dataVal: NSData =  NSURLConnection.sendSynchronousRequest(request1, returningResponse: response, error:nil)!
            var err: NSError

            println("response -- \(response)")
            var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataVal, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

            println("Synchronous \(jsonResult)")

is here anyone who can help me to get HTTP Header Response or status code by using this code? please

like image 739
Jabbar Avatar asked Aug 21 '15 12:08

Jabbar


2 Answers

Try this:

 func getData(url: NSURL) {
    let config: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session: NSURLSession = NSURLSession(configuration: config)

    let dataTask: NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {(data: NSData!, urlResponse: NSURLResponse!, error: NSError!) -> Void in

        if let httpUrlResponse = urlResponse as? NSHTTPURLResponse
        {
            if error {
                println("Error Occurred: \(error.localizedDescription)")
            } else {
                println("\(httpUrlResponse.allHeaderFields)") // Error
            }
        }
        })

       dataTask.resume()
    }
like image 126
iAnurag Avatar answered Oct 30 '22 17:10

iAnurag


Per your code in the original question, have you tried this?

let urlPath: String = "http://apiserver.com/api/login/?username=asdf&password=asdf"
var url: NSURL = NSURL(string: urlPath)!
var request1: NSURLRequest = NSURLRequest(URL: url)

var response: NSURLResponse? = nil

var error: NSError? = nil
var dataVal: NSData =  NSURLConnection.sendSynchronousRequest(request1, returningResponse: &response, error:&error)!
var err: NSError

println("response -- \(response)")
if let response = response as? NSHTTPURLResponse {
    if response.statusCode == 200 {
        print("Success")
    }
}
var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataVal, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

println("Synchronous \(jsonResult)")
like image 23
Matt Mathias Avatar answered Oct 30 '22 16:10

Matt Mathias