본문 바로가기
프로그래밍/Swift

스위프트 네트워크 통신 예(POST / GET)

by Mr-후 2018. 3. 12.
반응형

 

가장 많이 궁금했던 부분이 네트워크 통신 부분. 

실무에서 아무래도 네트워크 사용하지 않는 프로젝트가 없기 때문이다. 스위프트에서도 역시 좋은 라이브러리가 있는데 'Alamofire'에 대해는 다음장에서 실습하기로 하고, 기본적인 네트워크 통신 Method인 'get','post'에 대한 예제 코드를 올려 둔다. 

 


 

post방식 

 

 func post() {

        let userId = "younghu.min@gmail.com";

        let name = "후씨";

        let param = "userId=\(userId)&name=\(name)"

        let paramData = param.data(using: .utf8)

        

        //

        let url = URL(string : "url");

        

        //

        var request = URLRequest(url: url!)

        request.httpMethod = "POST"

        request.httpBody = paramData;

        

        //

        request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

        request.setValue(String(paramData!.count), forHTTPHeaderField: "content-Length")

        

        //

        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in

            //

            if let e = error {

                NSLog("An error has occurred: \(e.localizedDescription)")

                return;

            }

            

            //응답처리

            DispatchQueue.main.async {

                do {

                    let object = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary

                    guard let jsonObject = object else {return}

                    

                    NSLog("post json data = %@", jsonObject)

                    

                } catch let e as NSError {

                    NSLog("An error has occurred: \(e.localizedDescription)")

                }

            }

        }

        

        task.resume(); //POST전송

    }





get

    func callCurrentTime() {

        do {

            let url = URL(string: "url")

            let response = try String(contentsOf: url!)

            NSLog("current time = %@", response)

            

        } catch let e as NSError {

            print(e.localizedDescription);

        }

    }

 

 

반응형