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...


Tidak ada komentar:

Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.

Diberdayakan oleh Blogger.