example ejemplo create android retrofit okhttp simple-framework okio

android - ejemplo - retrofit kotlin



¿Cómo usar Retrofit y SimpleXML juntos para descargar y analizar un archivo XML de un sitio? (3)

Acabo de empezar a trabajar con Retrofit. Estoy trabajando en un proyecto que utiliza SimpleXML. ¿Alguien me puede dar un ejemplo en el que uno obtiene un XML de un sitio, por ejemplo, http://www.w3schools.com/xml/simple.xml "y lo lee?


Aquí es cómo hacerlo con Retrofit 2 .

Primero necesita una interfaz como (las anotaciones de encabezados son opcionales):

public interface ApiService { @GET("xml/simple.xml") @Headers({"Accept: application/xml", "User-Agent: Retrofit-Sample-App"}) Call<BreakfastMenu> getBreakfastMenu(); }

Los POJO anotados para XML son los mismos que en las otras respuestas.

Entonces necesitas hacer una solicitud al servidor:

Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://www.w3schools.com/") .addConverterFactory(SimpleXmlConverterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); Call<BreakfastMenu> call = apiService.getBreakfastMenu(); Response<BreakfastMenu> response = call.execute(); // response.code() == 200 BreakfastMenu breakfastMenu = response.body();

Las bibliotecas necesarias son:

  • reequipamiento 2.3.0
  • okhttp 3.8.0
  • convertidor-simplexml 2.3.0
  • simple-xml 2.7.1
  • Java 7

Fuente disponible en mi GitHub


Creará una interfaz como una nueva clase en su proyecto:

public interface ApiService { @GET("/xml/simple.xml") YourObject getUser(); }

Luego en tu actividad llamarás a lo siguiente:

RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("http://www.w3schools.com") .setConverter(new SimpleXmlConverter()) .build(); ApiService apiService = restAdapter.create(ApiService.class); YourObject object = apiService.getXML();

Para obtener sus bibliotecas correctamente, en su archivo build.gradle debe hacer lo siguiente:

configurations { compile.exclude group: ''stax'' compile.exclude group: ''xpp3'' } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.squareup.retrofit:retrofit:1.6.1'' compile ''com.mobprofs:retrofit-simplexmlconverter:1.1'' compile ''org.simpleframework:simple-xml:2.7.1'' compile ''com.google.code.gson:gson:2.2.4'' }

Luego debe especificar YourObject y agregarle anotaciones de acuerdo con la estructura del archivo xml.

@Root(name = "breakfast_menu") public class BreakFastMenu { @ElementList(inline = true) List<Food> foodList; } @Root(name="food") public class Food { @Element(name = "name") String name; @Element(name = "price") String price; @Element(name = "description") String description; @Element(name = "calories") String calories; }


import java.util.ArrayList; import java.util.List; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; @Root(name = "breakfast_menu") public class BrakfastMenu { @ElementList(inline = true) protected List<Food> food; public List<Food> getConfigurations() { if (food == null) { food = new ArrayList<Food>(); } return this.food; } public void setConfigurations(List<Food> configuration) { this.food = configuration; } }