Save session in swift http request

In my application, I use JSON, and I recently made a session, so if I would like to make some HTTP request to get data for a specific user, the user must log in earlier (also used by http request). in safari, when I enter the login url and then the url of the received data, it does this as necessary. but in my application, I first call the login, and then the URL to receive the data, but it probably starts a new session in each url request, which causes me to get an error and not receive the data. my url request function:

static func urlRequest (adress: String, sessionEnded: (NSDictionary->Void)?){
    println(adress)
    var urli = NSURL(string: adress)
    var request = NSURLRequest(URL: urli!)
    var rVal = "";
     self.task = NSURLSession.sharedSession().dataTaskWithURL(urli!) {(data, response, error) in
        var parseError: NSError?
        let parsedObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data,
            options: NSJSONReadingOptions.AllowFragments,
            error:&parseError)
        let po = parsedObject as NSDictionary
        if let a = sessionEnded{
            sessionEnded!(po)
        }
    }
    task!.resume()

}

Thanks in advance!

0
source share
1

, . , , API. , " ", , . , , " URL, ". , ? /, . , - API ?


, :

  • sessionEnded ( completionHandler ), , NSError, , .

  • sessionEnded ?.

  • , .

  • , ( data nil) NSError.

  • , , , , Cocoa, . , - performURLRequest.

  • , NSURLSessionTask, , (, , cancel , ).

, - :

func performURLRequest (address: String, completionHandler: ((NSDictionary!, NSError!) -> Void)?) -> NSURLSessionTask {
    let url = NSURL(string: address)
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        if data == nil {
            sessionEnded?(nil, error)
        } else {
            var parseError: NSError?
            let parsedObject = NSJSONSerialization.JSONObjectWithData(data, options: nil, error:&parseError) as? NSDictionary
            completionHandler?(parsedObject, parseError)
        }
    }
    task.resume()

    return task
}

:

performURLRequest("http://www.example.com/some/path") { responseDictionary, error in
    if responseDictionary == nil {
        // handle error, e.g.
        println(error)
        return
    }

    // use `responseDictionary` here
}
0

Source: https://habr.com/ru/post/1570707/


All Articles