티스토리 뷰
반응형
Swift에서 서버와 통신하기: URLSession / Alamofire
Swift Version 5
Xcode Version 11.5
URLSession
- Body에 들어가는 파라미터가 한 개일 때
func sendMessage(chatContent: String) {
let url = URL(string: "http://localhost:8080/test")
var request = URLRequest(url: url!)
request.httpMethod = "POST"
// Header
request.setValue("인증 정보", forHTTPHeaderField: "Authorization")
// Body
let data = "user_key=\(Bot.shared.access.appId)&content=\(chatText)".data(using: .utf8)
request.httpBody = data
URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("error: \(error.localizedDescription)")
return
}
guard let data = String(bytes: data!, encoding: .utf8) else {
return
}
print("data: \(data)")
}.resume()
}
- Body에 들어가는 파라미터가 두 개 이상일 때
func sendMessage(chatContent: String) {
let url = URL(string: "http://localhost:8080/test")
var request = URLRequest(url: url!)
request.httpMethod = "POST"
// Header
request.setValue("인증 정보", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// Body
let data = ["user_key": appId, "content": chatContent] as [String: Any]
guard let jsonData = try? JSONSerialization.data(withJSONObject: data, options: []) else { return }
request.httpBody = jsonData
URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("error: \(error.localizedDescription)")
return
}
guard let data = String(bytes: data!, encoding: .utf8) else {
return
}
print("data: \(data)")
}.resume()
}
Alamofire
func sendMessage(chatContent: String) {
let urlComponent = URLComponents(string: "http://localhost:8080/test")
guard let url = urlComponent?.url else { return }
// Header
let header: HTTPHeaders = [
"Authorization": "인증 정보"
]
// Body
let body = [
"user_key": appId,
"content": chatContent
] as [String: Any]
let request = AF.request(url, method: .post, parameters: body, encoding: JSONEncoding.default, headers: header)
request.validate(statusCode: 200...500).responseString { response in
switch response.result {
case .success:
print(response.value)
case .failure(let error):
print(error)
}
}
}
반응형
'Swift' 카테고리의 다른 글
Swift에서 JSON Parsing하기 - JSONSerialization vs Codable (7) | 2020.06.16 |
---|---|
[Swift] UITextField, UITextView에서 엔터 감지하기 (0) | 2020.06.04 |
[Swift] http basic auth (0) | 2020.05.11 |
[Swift5] 특수문자 ("/\ 등) String으로 입력하기 (3) | 2020.05.07 |
[Swift] this class is not key value coding-compliant for the key heightConstraint. (0) | 2020.04.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- UITextField 글자수 제한하기
- iOS Dark Mode
- Objective-C 프로젝트에서 Swift
- swift delegate
- RxSwift UITetxtField
- xcode 16
- passing data between ViewController and View
- 코르도바 플러그인
- UIUserInterfaceStyle
- Viewcontroller data
- loadView
- Swift 프로젝트에서 Objective-C
- User Interface Style
- codable date
- 코르도바 iOS
- ios framework device simulator
- passing data between ViewControllers
- loadView viewDidLoad
- ios universal framework
- xcode group folder
- urlsession 공통화
- swift generic
- 코르도바 Swift
- 코르도바 iOS Framework
- urlsession 모듈화
- linux java 설치
- codable
- urlrequest 공통화
- urlrequest 모듈화
- swift json 파싱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함