본문 바로가기

Codes Travel/iOS Boost Course #2019

URLSession Upload Task?

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 URLSession을 활용한 Upload Task 입니다.

 

주로 서버에서 JSON DATA를 받아오는 작업을 위주로 구현을 하다가 클라이언트에서 직접 서버로 데이터를 저장시키는 업로드 작업을 오랜만에 구현해보고 정리를 잘 해오지 않았던 것 같아서 이렇게 글을 올리게되었습니다.

 

먼저 샘플 코드를 공유해드립니다.

guard let baseUrl = URL(string: "https://example.com") else { return }
        let jsonData:[String: Any] = [
            "name": "Richard",
            "id": "wsoh86",
            "age": 19
        ]
        
        let data = try? JSONSerialization.data(withJSONObject: jsonData, options: .prettyPrinted)
        var request = URLRequest(url: baseUrl)
        request.httpMethod = "POST"
        
        URLSession.shared.uploadTask(with: request, from: data) { data, response, err in
            if let err = err {
                print(err.localizedDescription)
            }
            if let data = data, let dataString = String(data: data, encoding: .utf8) {
                print(dataString)
            }
            if let httpResponse = response as? HTTPURLResponse {
                print(httpResponse.statusCode)
            }
        }.resume()

서버에서 데이터를 받아오는 작업과 다른 점은

 

1. 서버에 저장시켜야하는 데이터를 만들어서 JSONSerialization을 통해서 Data 타입으로 만들어준 data를 UploadTask에 전달합니다.

2. 서버에 데이터가 저장하는 작업이 성공했는지 statusCode를 확인 할 수 있고 (보통 200을 성공 보면 되는 듯합니다). 저장 실패시 핸들링이 가능하다는 점입니다.

 

URLRequest의 httpMethod는 "POST" 나 "PUT" 메서드를 사용합니다.

그리고 BaseURL을 정확하게 구현해줘야 해당 서버에 데이터를 넘겨 줄 수 있습니다.

 

잘못된 부분이 있다면 꼭 댓글 부탁드립니다!

확인해서 수정하도록 할게요!!

 

끝까지 읽어주셔서 정말 감사합니다 :)

 

부스트코스 iOS 프로그래밍

1) URLSession과 URLSessionDataTask

https://www.edwith.org/boostcourse-ios/lecture/16863/

 

[LECTURE] 1) URLSession과 URLSessionDataTask : edwith

URLSession과 URLSessionDataTask   HTTP/HTTPS를 통해 콘텐츠(데이터)를 주고받기 위해 API를 제공하는 클래스인 URLSession과 세션 작업을 ... - 부스트코스

www.edwith.org

'Codes Travel > iOS Boost Course #2019' 카테고리의 다른 글

Grand Central Dispatch  (0) 2019.09.11
App Transport Security  (0) 2019.09.11
UIScrollView 스크롤 뷰  (0) 2019.08.22
UICollectionView 컬렉션 뷰  (0) 2019.08.22
비동기 프로그래밍  (0) 2019.08.22