꾸준히 안타치기

API Alamofire / SwiftJSON 사용법 공부하기***** 본문

iOS/서버연동

API Alamofire / SwiftJSON 사용법 공부하기*****

글자줍기 2021. 12. 27. 14:20
반응형

Alamofire 적용

 


진행순서

1. 코코아팟 설치 

https://youtu.be/QvvJhCTbLTc

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
Comments