ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ios - Swift] Alamofire Example
    ios 2020. 12. 21. 09:40

     

    맥북에서 프로젝트 파일이 사라지는 버그가 있는 것 같아 관련 소스가 많이 사라져 내용이 빈약합니다...

     

    이번 글에서는 Alamofire 라이브러리에 대한 간단한 코드만 작성하도록 하겠습니다.

     

     

    우선 서버는 톰캣 서버를 이용했으며 결과 값 수신은 json을 이용해 리턴 받을 수 있도록 별도의 서버를 구축하면 됩니다.

     

     

     

    1. request

     

    guard let url = URL(string: "http://192.168.0.1/rest/member/members.json") else {
        return
    }
            
    let params = [
        "identifier" : "공유",
        "password" : 1234,
    ] as [String : Any]
    let alamo = AF.request(url
        , method: .post
        , parameters: params
        , encoding: URLEncoding.default).validate(statusCode: 200..<300)
    alamo.responseJSON { (response) in
        let json = JSON(response.data)
          
        let list = json["mlist"]
        let resultCode = json["resultCode"]
                
        print("list : \(list)")
        print("resultCode : \(resultCode)")
    }

    response.result를 통해 success 또는 failure의 결과를 확인할 수 있습니다.

     

     

     

    2. flie upload

     

    let image1 = img1.image
    let image2 = img2.image
    let image3 = img3.image
    let image4 = img4.image
    
    let data1 = image1?.pngData()
    let data2 = image2?.pngData()
    let data3 = image3?.pngData()
    let data4 = image4?.pngData()
    
    guard let url = URL(string: "http://192.168.0.1/rest/chat/uploadImages.do") else {
        return
    }
    
    let header: HTTPHeaders = [
        "Content-Type" : "multipart/form-data", // application/json
        "Accept" : "application/json"
    ]
    
    let alamo = AF.upload(multipartFormData: { multipartFormData in
        multipartFormData.append(data1!, withName: "fileData1", fileName: "fileData1.png", mimeType: "image/png")
        multipartFormData.append(data2!, withName: "fileData2", fileName: "fileData2.png", mimeType: "image/png")
        multipartFormData.append(data3!, withName: "fileData3", fileName: "fileData3.png", mimeType: "image/png")
        multipartFormData.append(data4!, withName: "fileData4", fileName: "fileData4.png", mimeType: "image/png")
    }, to: url, method: .post, headers: header)
    
    alamo.responseJSON { (response) in
        switch response.result
        {
            case .success(let value):
                print("success: \(value)")
            case .failure(let value):
                print("failure: \(value)")
        }
    }

    alamo.responseJson 사용할 때 주의할 점은 서버에 파일이 업로드가 되더라도 결과에서는 실패로 인식할 때가 있습니다.

     

    수신을 json으로 받기 위해 헤더 설정에서  "Accept" : "application/json"를 추가하면 실패로 나오던 것을 해결할 수 있으며 json으로 받지 않을 분은

     

    responseJson 대신 response을 사용하면 됩니다.

    댓글

Designed by Tistory.