-
[오류기록] swiftUI alamofire에서만 mapping method 통신이 안되는 현상개발 2022. 8. 19. 11:13728x90
환경
스프링부트 + swiftUI alamofire를 통하여 JSON통신중
다음 코드와 같이 작성했을때 발생한 오류
현상
인터셉터까지는 접근을 하지만 맵핑한 메소드는 접근하지 못하고 바로 리턴되는 현상
콘솔에서는 415에러 또는 400에러가 발생한다.
let alamo = AF.request(url, method: .post, parameters: params, headers: headers).validate(statusCode: 200..<300) alamo.responseJSON() { response in switch response.result{ case .success(let value): if let jsonObj = value as? [String: Any]{ print("데이터의 갯수: \(jsonObj.count)") //print("jsonObj : \(jsonObj)") if let userId = jsonObj["userId"]{ print("userId = \(userId)") } if let id = jsonObj["id"]{ print("id = \(id)") } if let title = jsonObj["title"]{ print("title = \(title)") } if let completed = jsonObj["completed"]{ print("completed = \(completed)") } } case .failure(let error): print("error: \(String(describing: error.errorDescription))") } }
스프링부트의 콘솔을 분석했을 때 별다른 오류가 뜨지 않고
415에러, 400에러를 검색해보았을때 파라미터가 넘어오지 않을 경우 발생한다고해서 파라미터를 확인 했지만
별이상이 없었고, 단순히 통신이 되지 않는지 싶어 postman으로 확인을 했지만 별다른 이상은 없는 상황
또한 미리 제작해둔 코드로 테스트 했을때에는 정상적으로 통신되던 것으로 확인
결론적으로 지금 작성된 코드에서 뭔가 빠트려 발생한 오류라고 판단하고
1차적으로 생각한 가설은 스프링부트 맵핑할때 특정 Content-type만 허용할까 싶어
맵핑부분을 확인해보니 이상없는 상태
혹시모르니 맵핑부분에 Content-type을 application/json만 허용하도록 설정완료
결론
정확한 문제는 파악못했으나 encoding type을 설정안해서 통신과정에 받아들이지 못한것 같은 느낌
다음과 같이 코드를 수정 후 처리 완료
1번째줄의 request를 호출하는 과정에 encoding: JSONEncoding.default를 추가하니 오류가 수정됨
let alamo = AF.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).validate(statusCode: 200..<300) alamo.responseJSON() { response in switch response.result{ case .success(let value): if let jsonObj = value as? [String: Any]{ print("데이터의 갯수: \(jsonObj.count)") //print("jsonObj : \(jsonObj)") if let userId = jsonObj["userId"]{ print("userId = \(userId)") } if let id = jsonObj["id"]{ print("id = \(id)") } if let title = jsonObj["title"]{ print("title = \(title)") } if let completed = jsonObj["completed"]{ print("completed = \(completed)") } } case .failure(let error): print("error: \(String(describing: error.errorDescription))") } }
의문
물론 오류 발생 초반에 저런 옵션을 추가해주었지만 빌드 실패한 경험이 있는데
왜 오류가 발생해서 지금까지 왔는지 잘 모름(유저 바이러스인듯)
:: 유저바이러스 - 남들이 만지면 잘되는데 본인만 안됨
'개발' 카테고리의 다른 글
[SWIFT] For 반복문 (0) 2022.09.01 php 이전 버전 아카이브 (0) 2022.08.19 [에러기록] java.util.ArrayList cannot be cast to java.util.Map (0) 2022.08.18 [에러기록] 쿼리 실행 후 IndexOutOfBoundsException (0) 2022.08.18 [에러기록] post mapping 이후 에러나는 경우 (0) 2022.08.18