Notice
Recent Posts
Recent Comments
Link
투케이2K
131. (ios/swift) URLSession 사용해 post 쿼리 파람 전송 및 http response header cookies 응답 헤더 쿠키 데이터 확인 본문
IOS
131. (ios/swift) URLSession 사용해 post 쿼리 파람 전송 및 http response header cookies 응답 헤더 쿠키 데이터 확인
투케이2K 2022. 3. 18. 15:30[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
func requestPOST() {
// [URL 지정 및 파라미터 값 지정 실시]
var urlComponents = URLComponents(string: "https://test.com/user?")
let paramQuery_1 = URLQueryItem(name: "userId", value: "1")
let paramQuery_2 = URLQueryItem(name: "id", value: "1")
urlComponents?.queryItems?.append(paramQuery_1) // 파라미터 지정
urlComponents?.queryItems?.append(paramQuery_2) // 파라미터 지정
// [http 통신 타입 및 헤더 지정 실시]
var requestURL = URLRequest(url: (urlComponents?.url)!)
requestURL.httpMethod = "POST" // POST
requestURL.addValue("application/json", forHTTPHeaderField: "Content-Type") // POST
// [http 요쳥을 위한 URLSessionDataTask 생성]
print("")
print("====================================")
print("[requestPOST : http post 요청 실시]")
print("url : ", requestURL)
print("====================================")
print("")
let dataTask = URLSession.shared.dataTask(with: requestURL) { (data, response, error) in
// [error가 존재하면 종료]
guard error == nil else {
print("")
print("====================================")
print("[requestPOST : http post 요청 실패]")
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("[requestPOST : http post 요청 에러]")
print("error : ", (response as? HTTPURLResponse)?.statusCode ?? 0)
print("msg : ", (response as? HTTPURLResponse)?.description ?? "")
print("====================================")
print("")
return
}
// [response header cookies 데이터 확인]
let cookies = HTTPCookie.cookies(withResponseHeaderFields: (response as? HTTPURLResponse)?.allHeaderFields as! [String : String], for: (urlComponents?.url)!)
print("")
print("====================================")
print("[requestPOST : http post 요청 성공]")
print("response header cookies : ", cookies)
print("====================================")
print("")
// [response 데이터 획득, utf8인코딩을 통해 string형태로 변환]
let resultCode = (response as? HTTPURLResponse)?.statusCode ?? 0
let resultLen = data! // 데이터 길이
let resultString = String(data: resultLen, encoding: .utf8) ?? "" // 응답 메시지
print("")
print("====================================")
print("[requestPOST : http post 요청 성공]")
print("resultCode : ", resultCode)
print("resultLen : ", resultLen)
print("resultString : ", resultString)
print("====================================")
print("")
}
// network 통신 실행
dataTask.resume()
}
반응형
'IOS' 카테고리의 다른 글
Comments