[swift] Swift로 HTTP 요청에서 쿠키 가져오기

HTTP 요청을 보낼 때, 종종 서버에서 쿠키를 전달받는 경우가 있습니다. Swift를 사용하여 HTTP 요청에서 쿠키를 가져오는 방법에 대해 알아보겠습니다.

URLSession을 사용하여 HTTP 요청 보내기

먼저, URLSession을 사용하여 HTTP 요청을 보내는 방법에 대해 알아보겠습니다. 다음과 같이 URLSession을 사용하여 GET 요청을 보내고 응답을 처리하는 예제 코드를 작성해보겠습니다.

import Foundation

let url = URL(string: "https://example.com")
let session = URLSession.shared
let task = session.dataTask(with: url!) { (data, response, error) in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else if let data = data {
        let responseString = String(data: data, encoding: .utf8)
        print("Response: \(responseString ?? "")")
    }
}
task.resume()

이 코드는 URL(string:) 메서드를 사용하여 URL 객체를 만들고, URLSession.shared를 사용하여 URLSession 객체를 얻습니다. URLSession.dataTask(with:completionHandler:) 메서드를 호출하여 GET 요청을 보내고, 후속 클로저를 사용하여 응답을 처리합니다. 에러가 있는 경우 에러 메시지를 출력하고, 데이터가 있는 경우 데이터를 문자열로 변환하여 출력합니다.

URLSessionConfiguration을 수정하여 쿠키 포함 요청 보내기

이제, URLSessionConfiguration을 수정하여 쿠키를 포함하는 요청을 보내는 방법에 대해 알아보겠습니다. 아래 코드에서는 HTTPCookieStorage.shared.cookies를 사용하여 현재 저장된 모든 쿠키를 가져온 후, HTTPCookie.requestHeaderFields(with:) 메서드를 사용하여 쿠키 헤더를 만듭니다. 이 헤더를 URLSessionConfigurationhttpAdditionalHeaders 속성에 추가하여 요청을 보내면 쿠키가 포함된 요청을 보낼 수 있습니다.

import Foundation

let url = URL(string: "https://example.com")
let sessionConfig = URLSessionConfiguration.default
sessionConfig.httpAdditionalHeaders = HTTPCookie.requestHeaderFields(with: HTTPCookieStorage.shared.cookies!)
let session = URLSession(configuration: sessionConfig)
let task = session.dataTask(with: url!) { (data, response, error) in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else if let data = data {
        let responseString = String(data: data, encoding: .utf8)
        print("Response: \(responseString ?? "")")
    }
}
task.resume()

이제 해당 코드를 실행하면 쿠키를 포함하여 서버로 요청이 전송되고 응답이 올바르게 처리될 것입니다.

결론

Swift를 사용하여 HTTP 요청에서 쿠키를 가져오는 방법에 대해 알아보았습니다. URLSession을 사용하여 요청을 보낼 때, URLSessionConfiguration을 수정하여 쿠키를 포함하는 요청을 보낼 수 있습니다. 이를 통해 쿠키 관련 작업을 손쉽게 처리할 수 있습니다.

참고 자료: