¿Cómo consumir la ApiRest de WordPress en Android?

Puede que por la web no haya mucha documentación en español sobre como consumir la api rest que autogenera el CMS de WordPress, justamente por eso he decidido crear un ejemplo básico como traer esos datos y mostrarlos de una manera práctica, utilizando 3 widgets populares en el mundo Android. Los cuales serán:
  • Cardview
  • TextView
  • RecyclerView
Con estos widgets y con la magia en código Java que les compartiré hoy, verán lo práctico que es consumir una api rest con las características del CMS más popular del mundo.


Crear proyecto en Android Studio

Acá no es necesario mostrar cómo hacerlo, básicamente lo que hice fue crear un proyecto en blanco con sdk mínimo la api 15 y luego deje todo por default.

Importar librerías

Las librerías a importar serán las de Volley, RecyclerView y CardView.
implementation 'com.android.volley:volley:1.1.0'
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.android.support:cardview-v7:26.1.0'

Crear el controlador de nuestra app

Vamos a crear nuestro paquete llamado “adapter” y dentro de el mismo agregaremos la clase que contiene los <Getters & Setters> y la clase Adaptador que veremos en el siguiente paso.

Agreguemos el siguiente código
public class PostGS {

private String title;

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public PostGS(String title) {
this.title = title;
}

}

Crear vista del adaptador

Antes de seguir viendo código Java, recordemos que debe haber alguna interfaz de usuario que mostrará la información que recibamos de la petición con Volley.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp">

<TextView
android:id="@+id/tv_post_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="16sp" />

</android.support.v7.widget.CardView>

Crear adaptador

Ahora si, continuamos creando nuestra clase Java que contendrá el código que interactúa con la interfaz de usuario.
public class PostAdapter extends RecyclerView.Adapter<PostAdapter.MyViewHolder> {

private List<PostGS> postList;

public class MyViewHolder extends RecyclerView.ViewHolder {

public TextView tvTitle;

public MyViewHolder(View v) {
super(v);
tvTitle = v.findViewById(R.id.tv_post_title);
}

}

public PostAdapter(List<PostGS> postList) {
this.postList = postList;
}

@Override
public PostAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_adapter, parent, false);
return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(PostAdapter.MyViewHolder holder, int position) {
PostGS postGs = postList.get(position);
holder.tvTitle.setText(postGs.getTitle());
}

@Override
public int getItemCount() {
return postList.size();
}
}

Realizar petición hacia la ApiRest de WordPress

Se viene la parte crucial de nuestro código y para debemos dirigirnos a nuestro “Actividad Principal” (MainActivity.java) y copiamos el siguiente código dentro de la clase.

public class MainActivity extends AppCompatActivity {

private ArrayList<PostGS> posts = new ArrayList<>();
protected static String url = "http://dev.lazarusgt.com/wp-json/wp/v2/posts";
private RecyclerView rvMain;
private ProgressDialog progressDialog;
private RequestQueue req;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

rvMain = findViewById(R.id.rv_main);
RecyclerView.LayoutManager manager = new LinearLayoutManager(this);
rvMain.setLayoutManager(manager);
rvMain.setHasFixedSize(true);
rvMain.setItemAnimator(new DefaultItemAnimator());

req = Volley.newRequestQueue(this);
loadDialog();
getPosts();
}

private void setUpAdapter(ArrayList<PostGS> posts) {
this.rvMain.setAdapter(new PostAdapter(posts));
}

private void loadDialog() {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading posts...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
}

private void getPosts() {
JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("POST", response.toString());

try {
for (int i = 0; i < response.length(); i++) {
JSONObject post = (JSONObject) response.get(i);
JSONObject postTitle = post.getJSONObject("title");

String title = postTitle.getString("rendered");
posts.add(new PostGS(title));

setUpAdapter(posts);
progressDialog.dismiss();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
VolleyLog.d("VOLLEY-ERROR", error.getMessage());
}
});
req.add(request);
}

}

Brindar permisos de internet

A continuación daremos permisos de internet en nuestra aplicación móvil, de esta manera Volley podrá hacer la petición que hemos realizado en el paso anterior.
Dirigite a tu árbol de archivos y carpetas en Android Studio y selecciona la carpeta manifests y luego selecciona el AndroidManifest.xml que se ha creado por defecto.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gt.dev.lazaro.requesttowordpressapirest">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

Es hora de compilar nuestro proyecto y comprobar que todo está funcionando bien. Como podrás notar es un ejemplo bastante sencillo y práctico de implementar.

Ahora puedes interactuar con la ApiRest de WordPress y con otras Api Rest similares a esta. Bien, comparte este contenido si te ha servido y también puedes descargar el código en Gitlab.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

aceptar