아미(아름다운미소)

[iOS/SWIFT] HTTP 통신하기 본문

랭귀지/SWIFT

[iOS/SWIFT] HTTP 통신하기

유키공 2018. 2. 23. 10:00

JSONSerialization을 이용한 HTTP 통신하기

다음은 JSON 요청 파라미터를 담아서 POST 요청을 하는 예입니다.
 @IBAction func jsonPost(_ sender: Any) {
   // 1. 전송할 값 준비
   let userId = (self.userId.text)!
   let name = (self.name.text)!
   let param = ["userId": userId, "name": name] // JSON 객체로 변환할 딕셔너리 준비
   let paramData = try! JSONSerialization.data(withJSONObject: param, options: [])

   // 2. URL 객체 정의
   let url = URL(string: "http://~~~~");

   // 3. URLRequest 객체 정의 및 요청 내용 담기
   var request = URLRequest(url: url!)
   request.httpMethod = "POST"
   request.httpBody = paramData

   // 4. HTTP 메시지에 포함될 헤더 설정
   request.addValue("applicaion/json", forHTTPHeaderField: "Content-Type")
   request.setValue(String(paramData.count), forHTTPHeaderField: "Content-Length")

   // 5. URLSession 객체를 통해 전송 및 응답값 처리 로직 작성

   let task = URLSession.shared.dataTask(with: request) {(data, response, error) in
	
            guard let data = data, error == nil else {                                                 // check for fundamental networking error
                print("error=\(error)")
                return
            }
            
            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                print("statusCode should be 200, but is \(httpStatus.statusCode)")
                print("response = \(response)")
            }
            
            let responseString = String(data: data, encoding: .utf8)
            print("responseString = \(responseString)")

   }

   // 6. POST 전송

   task.resume()

 }
Comments