koneksi HTTP dengan Swift 4
Gimana? Masih puyeng dengan tutorial sebelumnya? Siap siap tambah puyeng yah dengan pembahasan kali ini hahaha. Sekarang kita akan membahas cara melakukan koneksi internet dengan menggunakan swift 4
Pertama, kita membutuhkan library alamofire. Alamofire adalah library yg digunakan untuk melakukan koneksi ke jaringan. Anda bisa membaca tentang alamofire ini lebih lengkap dan cara installasinya melalui link ini
Oiya, Anda mungkin akan mendapatkan pesan error seperti framework not found atau sejenisnya, coba perbaiki ini dengan cara close project kemudian buka project melalui file yg berekstensi .xcworkplace dan bukan yg berekstensi .xcodeproj
Jika library alamofire sudah selesai dipasang, kita lanjut ke pemakaiannya. Ketikkan skrip dibawah ini di bagian atas file
import Alamofire
Contoh penggunaan
Misal Anda ingin mengambil JSON dari link https://jsonplaceholder.typicode.com/posts/1 maka ketikkan skrip dibawah ini
Alamofire.request("https://jsonplaceholder.typicode.com/posts/1").downloadProgress { progress in
print("Download Progress: \(progress.fractionCompleted)")
}.response { response in
//print("Request: \(response.request)")
//print("Response: \(response.response)")
//print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
}
}
Skrip diatas akan menghasilkan : Data: {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
Cara mengirim JSON dengan method POST
Kita sudah tahu cara mengambil data, tapi bagaimana cara mengirim data JSON? Pertama buatlah sebuah function dengan skrip dibawah ini
func jsonToDictionary(from text: String) -> [String: Any]? {
guard let data = text.data(using: .utf8) else { return nil }
let anyResult = try? JSONSerialization.jsonObject(with: data, options: [])
return anyResult as? [String: Any]
}
Kemudian buatlah sebuah variabel berisi paramter yang akan dikirim, misal pada tutorial ini kita akan mengirim JSON ke alamat https://jsonplaceholder.typicode.com/posts
dengan variabel paramternya adalah
var jsonparam:String="{\"title\":\"Coba dulu\",\"body\":\"isi pesan\",\"userId\":1}"
Kemudian ketik var params = jsonToDictionary(from: jsonparam) ?? [String : Any]()
Lalu terakhir masukkan skrip dibawah ini
Alamofire.request("https://jsonplaceholder.typicode.com/posts", method: .post,parameters: params, encoding: JSONEncoding.default, headers: [:]).downloadProgress { progress in
print("Download Progress: \(progress.fractionCompleted)")
}.response { response in
//print("Request: \(response.request)")
//print("Response: \(response.response)")
//print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
}
}
Setelah dijalankan akan muncul :
Data: {
"body": "isi pesan",
"title": "Coba dulu",
"userId": 1,
"id": 101
}
Menggunakan Dictionary
Selain menggunakan string json, kita juga bisa menggunakan Dictionary, caranya buatlah variabel seperti dibawah ini
let paramnya=[
"title": "Coba dulu",
"body": "Isi pesan",
"userId": 1] as [String : Any]
Kemudian ganti parameters: params dengan parameters: paramnya lalu jalankan, akan muncul pesan seperti dibawah ini
Data: {
"body": "isi pesan",
"title": "Coba dulu",
"userId": 1,
"id": 101
}
Mudahkan? Selamat bereksperimen yah...
Pertama, kita membutuhkan library alamofire. Alamofire adalah library yg digunakan untuk melakukan koneksi ke jaringan. Anda bisa membaca tentang alamofire ini lebih lengkap dan cara installasinya melalui link ini
Oiya, Anda mungkin akan mendapatkan pesan error seperti framework not found atau sejenisnya, coba perbaiki ini dengan cara close project kemudian buka project melalui file yg berekstensi .xcworkplace dan bukan yg berekstensi .xcodeproj
Jika library alamofire sudah selesai dipasang, kita lanjut ke pemakaiannya. Ketikkan skrip dibawah ini di bagian atas file
import Alamofire
Contoh penggunaan
Misal Anda ingin mengambil JSON dari link https://jsonplaceholder.typicode.com/posts/1 maka ketikkan skrip dibawah ini
Alamofire.request("https://jsonplaceholder.typicode.com/posts/1").downloadProgress { progress in
print("Download Progress: \(progress.fractionCompleted)")
}.response { response in
//print("Request: \(response.request)")
//print("Response: \(response.response)")
//print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
}
}
Skrip diatas akan menghasilkan : Data: {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
Cara mengirim JSON dengan method POST
Kita sudah tahu cara mengambil data, tapi bagaimana cara mengirim data JSON? Pertama buatlah sebuah function dengan skrip dibawah ini
func jsonToDictionary(from text: String) -> [String: Any]? {
guard let data = text.data(using: .utf8) else { return nil }
let anyResult = try? JSONSerialization.jsonObject(with: data, options: [])
return anyResult as? [String: Any]
}
Kemudian buatlah sebuah variabel berisi paramter yang akan dikirim, misal pada tutorial ini kita akan mengirim JSON ke alamat https://jsonplaceholder.typicode.com/posts
dengan variabel paramternya adalah
var jsonparam:String="{\"title\":\"Coba dulu\",\"body\":\"isi pesan\",\"userId\":1}"
Kemudian ketik var params = jsonToDictionary(from: jsonparam) ?? [String : Any]()
Lalu terakhir masukkan skrip dibawah ini
Alamofire.request("https://jsonplaceholder.typicode.com/posts", method: .post,parameters: params, encoding: JSONEncoding.default, headers: [:]).downloadProgress { progress in
print("Download Progress: \(progress.fractionCompleted)")
}.response { response in
//print("Request: \(response.request)")
//print("Response: \(response.response)")
//print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
}
}
Setelah dijalankan akan muncul :
Data: {
"body": "isi pesan",
"title": "Coba dulu",
"userId": 1,
"id": 101
}
Menggunakan Dictionary
Selain menggunakan string json, kita juga bisa menggunakan Dictionary, caranya buatlah variabel seperti dibawah ini
let paramnya=[
"title": "Coba dulu",
"body": "Isi pesan",
"userId": 1] as [String : Any]
Kemudian ganti parameters: params dengan parameters: paramnya lalu jalankan, akan muncul pesan seperti dibawah ini
Data: {
"body": "isi pesan",
"title": "Coba dulu",
"userId": 1,
"id": 101
}
Mudahkan? Selamat bereksperimen yah...
Tidak ada komentar:
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.