꾸준히 안타치기
API Alamofire / SwiftJSON 사용법 공부하기***** 본문
Alamofire 적용
진행순서
1. 코코아팟 설치
2. UI화면 만들기 - 버튼을 누르면, textView에 서버에 있는 값 가져와 보여주기
3. VIewController에서 파라미터에 값넣고 보내고, 응답 받아오기
4. http 통신허용
info에서 App Transport Security Settings의 +버튼 누르고, Allow Arbitrary Loads 추가 / NO를 YES로 변경
3. VIewController에서 파라미터에 값넣고 보내고, 응답 받아오기
import UIKit
import Alamofire
import SwiftyJSON
class RegisterViewController: UIViewController{
var essentialFieldList = [UITextField]()
// 통신결과
@IBOutlet weak var textView: UITextView!
// 버튼
@IBOutlet weak var BtnJoin: UIButton!
// 뷰가보이기전에 처리할것
override func viewDidLoad() {
super.viewDidLoad()
}
// 버튼 액션
@IBAction func joinBtn(_ sender: UIButton) {
print("RegisterViewController - 버튼클릭")
sendRequest()
}
// Alamofire 요청하기
func sendRequest(){
//POST방식
let parameter : Parameters = [
"user_id":"hong",
"user_pw":"1234"
]
let url: String = "http://nissisoft21.dothome.co.kr/login_test.php"
Alamofire.request(url,
method: .post,
parameters : parameter,
encoding: URLEncoding.httpBody,
headers: ["Content-Type" : "application/x-www-form-urlencoded",
"Accept" : "application/json"
]
).validate(statusCode: 200..<300)
.responseJSON(completionHandler: {
(response) in
print(response)
//JSON 결과값을 파싱해서 사용한다.
self.parseJSON( response )
})
}
// JSON 파싱하기
func parseJSON(_ response: DataResponse<Any>){
switch response.result {
case.success(_) :
//SwiftyJSON 라이브러리를 이용해, JSON을 파싱(분리,분석)하여 사용함
if let json = try? JSON(data: response.data!){
let result = json["login_result"]["result"].string
print( result! )
self.textView.text.append("\n \(result!)")
let message = json["login_result"]["message"].string
print( message!)
self.textView.text.append("\n\(message!)")
let login_return = json["login_result"]["login_data"]["return"].string
print( login_return! )
self.textView.text.append("\n\(login_return!)")
let login_message = json["login_result"]["login_data"]["message"].string
print( login_message! )
self.textView.text.append("\n\(login_message!)")
//배열을 가져올때
let arrayData = json["login_result"]["list"].array
for data in arrayData! {
// 이름
let name = data["name"].string
print( name! )
self.textView.text.append("\n\(name!)")
// 키
let height = data["height"].string
print( height! )
self.textView.text.append("\n\(height!)")
let weight = data["weight"].string
print( weight! )
self.textView.text.append("\n\(weight!)")
}
}
break
case.failure(_) :
print("통신을 실패함.", String(describing: response.result.error))
break
}
}
}
JSON파싱하기
login_result안에 list배열 1개와, login_data, message, result 가 들어있음
login_result안에 / "login_data" 의 message 가져오기
if let json = try? JSON(data: response.data! ){
let login_message = json["login_result"]["login_data"]["message"].string
print( login_message! )
self.textView.text.append("\n\(login_message!)")
}
"login_data" 의 return 가져오기
if let json = try? JSON(data: response.data! ){
let login_message = json["login_result"]["login_data"]["return"].string
print( return! )
self.textView.text.append("\n\(return!)")
}
list 가져오기(배열 )
//배열을 가져올때
let arrayData = json["login_result"]["list"].array
for data in arrayData! {
// 이름
let name = data["name"].string
self.textView.text.append("\n\(name!)")
// 키
let height = data["height"].string
self.textView.text.append("\n\(height!)")
// 몸무게
let weight = data["weight"].string
self.textView.text.append("\n\(weight!)")
}
JSON파싱하기(전체)
func parseJSON(_ response: DataResponse<Any>){
switch response.result {
case.success(_) :
//SwiftyJSON 라이브러리를 이용해, JSON을 파싱(분리,분석)하여 사용함
if let json = try? JSON(data: response.data!){
let result = json["login_result"]["result"].string
print( result! )
self.textView.text.append("\n \(result!)")
let message = json["login_result"]["message"].string
print( message!)
self.textView.text.append("\n\(message!)")
let login_return = json["login_result"]["login_data"]["return"].string
print( login_return! )
self.textView.text.append("\n\(login_return!)")
let login_message = json["login_result"]["login_data"]["message"].string
print( login_message! )
self.textView.text.append("\n\(login_message!)")
//배열을 가져올때
let arrayData = json["login_result"]["list"].array
for data in arrayData! {
// 이름
let name = data["name"].string
print( name! )
self.textView.text.append("\n\(name!)")
// 키
let height = data["height"].string
print( height! )
self.textView.text.append("\n\(height!)")
let weight = data["weight"].string
print( weight! )
self.textView.text.append("\n\(weight!)")
}
}
break
case.failure(_) :
print("통신을 실패함.", String(describing: response.result.error))
break
}
}
https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#using-alamofire 공식 API Alamofire
https://youtu.be/WR4_KenX0G8?t=659 / 정대리 / 어려운편 기본을 이해하고 다시보기
https://www.raywenderlich.com/6587213-alamofire-5-tutorial-for-ios-getting-started
Alamofire 5 Tutorial for iOS: Getting Started
In this Alamofire tutorial, you’ll build an iOS companion app to perform networking tasks, send request parameters, decode/encode responses and more.
www.raywenderlich.com
'iOS > 서버연동' 카테고리의 다른 글
Alamofire 예제 (0) | 2022.01.05 |
---|---|
JSON / Codable - Encoding and Decoding (0) | 2022.01.04 |
댓글 구조 (0) | 2021.09.08 |
aws timezone시간 바꾸기 (0) | 2021.09.03 |
TCP/IP 앱개발자에 필요한 네트워크 지식 / 서버연동 어떻게? (0) | 2021.05.10 |