Marton Zeisler
Marton Zeisler

Reputation: 199

Swift - urlsession cookies

I have a php webAPI which works well and I want to login with that in my app. I want to use cookies for that. So, I save the cookies when the user signs in and that works. I store it in userdefaults when I want to use only place cookies into HTTPCookieStorage.shared.

I try to use this for my new request, and my question is how can I add the cookies to my request?

I tried this but it's not working...

let cookiesArray = HTTPCookieStorage.shared.cookies
    print(cookiesArray)
    //HTTPCookieStorage.shared.setCookies(cookiesArray!, for: url, mainDocumentURL: url)
    let headers = HTTPCookie.requestHeaderFields(with: cookiesArray!)



    var urlRequest = URLRequest(url: url)
    urlRequest.httpMethod = "POST"
    urlRequest.httpShouldHandleCookies = true
    urlRequest.httpBody = postString.data(using: String.Encoding.utf8)

    urlRequest.allHTTPHeaderFields = headers
    //urlRequest.setValue("PHPSESSID=oe22uf92poc5c7s23u4ukl83g0", forHTTPHeaderField: "Cookie")

    //URLSessionConfiguration().httpCookieAcceptPolicy = .always
    let session = URLSession.shared
    session.configuration.httpCookieStorage = HTTPCookieStorage.shared
    session.configuration.httpCookieAcceptPolicy = .always
    session.configuration.httpShouldSetCookies = true
    session.configuration.httpAdditionalHeaders = headers
    let task = session.dataTask(with: urlRequest) { (data, response, error) in




        print(data)
        print(response)
        print(error)
        print("itt az end\n")
    }
    task.resume()

Upvotes: 1

Views: 2775

Answers (1)

Mountainbrussell
Mountainbrussell

Reputation: 115

I can't comment yet, but I agree that more info is needed. If you are getting errors those would be helpful to post. Also, what you are getting for your

data 
response
error

would be helpful.

Other than that, I would first look at setting up Charles as an HTTP Proxy so you can see exactly what is happening when you make the request. Knowing what response you are receiving will let you know what is going wrong.

https://www.charlesproxy.com/

Upvotes: 1

Related Questions