ios
[ios - Swift] Alamofire Example
POKY_0908
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을 사용하면 됩니다.