랭귀지/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()
}