Notice
Recent Posts
Recent Comments
Link
투케이2K
85. (swift/xcode) URLSession 사용해 connectionTimeOut 커넥션 타임 아웃 시간 지정 및 responseHeader 데이터 확인 본문
Swift
85. (swift/xcode) URLSession 사용해 connectionTimeOut 커넥션 타임 아웃 시간 지정 및 responseHeader 데이터 확인
투케이2K 2022. 8. 14. 21:55[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
// [http 비동기 방식을 사용해서 파일 다운로드 및 저장 수행 실시]
var urlComponents = URLComponents(string: fileUrl)
var requestURL = URLRequest(url: (urlComponents?.url)!)
requestURL.httpMethod = "GET" // GET
requestURL.addValue("application/x-www-form-urlencoded; charset=utf-8;", forHTTPHeaderField: "Content-Type") // GET
print("")
print("===============================")
print("[C_Util >> submitDownloadFile() :: http 통신 요청 실시]")
print("-------------------------------")
print("주 소 :: ", requestURL)
print("===============================")
print("")
// [http 요쳥을 위한 URLSessionDataTask 생성]
let sessionConfig = URLSessionConfiguration.default
sessionConfig.timeoutIntervalForRequest = 10.0 // [커넥션 타임 아웃 설정]
let session = URLSession(configuration: sessionConfig)
let dataTask = session.dataTask(with: requestURL, completionHandler: { (data, response, error) in
// [error가 존재하면 종료]
guard error == nil else {
print("")
print("===============================")
print("[C_Util >> submitDownloadFile() :: http 통신 요청 실패]")
print("-------------------------------")
print("주 소 :: ", requestURL)
print("-------------------------------")
print("fail :: ", error?.localizedDescription ?? "")
print("===============================")
print("")
return
}
// [status 코드 체크 실시]
let successsRange = 200..<300
guard let statusCode = (response as? HTTPURLResponse)?.statusCode, successsRange.contains(statusCode)
else {
print("")
print("===============================")
print("[C_Util >> submitDownloadFile() :: http 통신 요청 에러]")
print("-------------------------------")
print("주 소 :: ", requestURL)
print("-------------------------------")
print("error :: ", (response as? HTTPURLResponse)?.statusCode ?? 0)
print("-------------------------------")
print("msg :: ", (response as? HTTPURLResponse)?.description ?? "")
print("===============================")
print("")
return
}
// [response 데이터 획득]
let resultHeader : [AnyHashable : Any] = (response as? HTTPURLResponse)!.allHeaderFields
let resultDic = resultHeader as! [String: Any]
let resultCode = (response as? HTTPURLResponse)?.statusCode ?? 0
let resultLen = data! // 데이터 길이
print("")
print("===============================")
print("[C_Util >> submitDownloadFile() :: http 통신 성공]")
print("-------------------------------")
print("주 소 :: ", requestURL)
print("-------------------------------")
print("responseHeader :: ", resultDic.description)
print("-------------------------------")
print("headerKey :: ", resultDic.keys.description)
print("-------------------------------")
print("resultCode :: ", resultCode)
print("===============================")
print("")
})
// [network 통신 실행]
dataTask.resume()
반응형
'Swift' 카테고리의 다른 글
Comments