Last Updated on 8 years by Mas Herdi
Halo semuanya, sebelumnya saya sudah pernah membuat tutorial untuk Retrofit2 di Android. Seperti bagaimana cara membuat HTTP GET dan HTTP POST request menggunakan Retrofit2 di Android, namun di kedua tutorial tersebut kita menggunakan JSON format sebagai response. Bagaimana jika response nya berbentuk XML? Karena itu di tutorial ini kita akan belajar untuk mem-parsing XML response menggunakan retrofit di Android.
Untuk tutorial ini, kita menggunakan API yang sama seperti di tutorial sebelumnya, bedanya hanya kita tambahkan parameter datatype=xml pada request nya, sehingga menjadi seperti ini :
http://twohgo.appspot.com/v1/storyofme?firstname=hafizh&lastname=herdi&datatype=xml
Belajar Parsing XML Menggunakan Retrofit2 di Android
Di tutorial ini kita hanya akan memodifikasi dari tutorial sebelumnya, jadi saya wajibkan kepada kalian untuk membaca terlebih dahulu tutorial-tutorial berikut ini :
Pre-Requisites
- Membuat Proyek Android Baru di Android Studio (Wajib)
- Tutorial Convert XML ke POJO (Wajib)
- Tutorial HTTP GET Request menggunakan Retrofit (Wajib)
Jika sudah, buka build.gradle dan pastikan kalian menambahkan dependency simplexml seperti di bawah ini :
dependencies { // ... compile ('com.squareup.retrofit2:converter-simplexml:2.1.0'){ exclude group: 'xpp3', module: 'xpp3' exclude group: 'stax', module: 'stax-api' exclude group: 'stax', module: 'stax' } }
Kita meng-exclude beberapa grup module, supaya tidak konflik dengan library dari API internal.
Oiya, karena kita akan mapping data XML ke dalam POJO, kalian bisa baca langkah-langkahnya di sini untuk mengubah XML response tersebut ke dalam java object model bernama Map.java.
Bagi yang kebingungan, kalian bisa langsung download POJO model nya di sini(Map.java).
Kemudian buka file TWOHApiService.java dan tambahkan method baru bernama getStoryofMeXML :
// ... @GET("storyofme") Call<Map> getStoryOfMeXML(@QueryMap HashMap<String, String> params); // rest of code ...
Setelah itu, pada MainActivity.java saat kita menginitialize Retrofit, kita tambahkan converter untuk XML ini, menggunakan simplexml, sehingga Retrofit kita nanti akan mempunyai multiple converter.
Retrofit twohRetro = new Retrofit.Builder() .baseUrl(Const.BASE_URL) .client(client) .addConverterFactory(SimpleXmlConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build();
Kemudian untuk param tambahan, yaitu datatype, bisa kita tambahkan saat akan melakukan GET request. Dilanjutkan dengan pemanggilan API XML nya.
HashMap<String, String> params = new HashMap<>(); params.put("firstname", etFirstName.getText().toString()); params.put("lastname", etLastName.getText().toString()); params.put("datatype", "xml"); TWOHAPIService apiService = twohRetro.create(TWOHAPIService.class); Call<id.web.twoh.retrofitsample.model.Map> result = apiService.getStoryOfMeXML(params); result.enqueue(new Callback<id.web.twoh.retrofitsample.model.Map>() { @Override public void onResponse(Call<id.web.twoh.retrofitsample.model.Map> call, Response<id.web.twoh.retrofitsample.model.Map> response) { dialog.dismiss(); try { if(response.body()!=null) Toast.makeText(MainActivity.this," response message "+response.body().getMessage(),Toast.LENGTH_LONG).show(); if(response.errorBody()!=null) Toast.makeText(MainActivity.this," response message "+response.errorBody().string(),Toast.LENGTH_LONG).show(); }catch (Exception e){ e.printStackTrace(); } } @Override public void onFailure(Call<id.web.twoh.retrofitsample.model.Map> call, Throwable t) { dialog.dismiss(); t.printStackTrace(); } });
That’s all, jika sudah kita bisa langsung demokan aplikasinya.
Demo
Jadi flow nya, kita mengubah XML response pada API saya yang seperti di bawah ini :
<map> <message> Hello hafizh from the house herdi! That's your story! </message> <status>200</status> </map>
Menjadi POJO model menggunakan cara berikut.
Kemudian jika kita melakukan HTTP GET Request, akan tampil hasilnya sebagai berikut.
Jika kalian ingin melihat mentahan XML nya, bisa dilihat pada bagian sebelah kanan gambar di atas, dimana kita tidak memberikan param lastname, sehingga muncul error 400 dalam bentuk XML.
Oke guys, semoga membantu ! Untuk lebih lanjutnya kalian bisa pelajari dari source code lengkapnya yang bisa kalian download langsung di GitHub saya. Jangan lupa follow dan star project nya ya, silahkan tulis komentar apabila ada yang kurang dimengerti. Keep awesome ! 😀