투케이2K

508. (ios/swift5) [OkHttpClient] HTTP 통신 수행 라이브러리 사용해 Post Body Json 방식 요청 본문

IOS

508. (ios/swift5) [OkHttpClient] HTTP 통신 수행 라이브러리 사용해 Post Body Json 방식 요청

투케이2K 2024. 4. 19. 10:44
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [테스트 메인 함수 정의 실시]
    // -----------------------------------------------------------------------------------------
    func testMain() {
        S_Log._D_(description: "테스트 함수 시작 실시", data: nil)
        
        
        /*
        // -------------------------------------------------------
        [요약 설명]
        // -------------------------------------------------------
        1. OkHttpClient 라이브러리는 Ios 에서 간편하게 HTTP 네트워크 통신을 할 수 있는 라이브러리입니다
        // -------------------------------------------------------
        2. 필요 import : import OkHttpClient
        // -------------------------------------------------------
        3. OkHttpClient 라이브러리 Git 공식 사이트 : https://github.com/rmichelberger/OkHttpClient/
        // -------------------------------------------------------
        4. 라이브러리 추가 방법 참고 사이트 : https://blog.naver.com/kkh0977/223420256050
        // -------------------------------------------------------
        */
        
        
        // [로직 처리 실시]
        Task {
            
            do {
                // [HTTP 요청 주소 정의]
                let url = "https://jsonplaceholder.typicode.com/posts"
                
                
                // [OkHttpClient 생성]
                let client = OkHttpClient()
                
                
                // [URL 및 Request 정의]
                let urls = URL(string: url)
                var requests = URLRequest(url: urls!)
                
                requests.httpMethod = "POST"
                requests.timeoutInterval = 30
                requests.addValue("application/json", forHTTPHeaderField: "Content-Type")
                
                requests.httpBody = "{\"userId\":1, \"id\":1}".data(using: .utf8) // body 데이터 삽입
                
                
                // [HTTP 요청 수행 및 리턴 확인]
                let result: jsonStruct = try await client.execute(request: requests)
                
                
                // [로그 출력 수행]
                S_Log._D_(description: "HTTP 통신 로그 확인", data: [
                    "result :: \(result)"
                ])
            }
            catch {
                S_Log._D_(description: S_FinalMsg.LOG_BUG_STATE, data: [
                    "catch :: \(error.localizedDescription)"
                ])
            }

        }

    }
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [HTTP 데이터 파싱 구조체 정의]
    // -----------------------------------------------------------------------------------------
    struct jsonStruct : Codable {

        var userId : Int
        var id : Int
        
        // [구조체 생성자 초기화 실시]
        init(userId:Int, id: Int){
            self.userId = userId
            self.id = id
        }
    }
 

[결과 출력]


반응형
Comments