Estoy empezando a incursionar en las API de Mercado Libre y decidí crear una aplicación de ejemplo.
La idea es utilizar la sdk de Java disponible para Mercado Libre para poder hacerlo. También existen para otros lenguajes como PHP, Python, entre otros. En esta github de mercado libre podes encontrar más información.
En este ejemplo vamos a utilizar la sdk de java.
Los pasos son los siguentes:
1) Para poder conectarse con las API de MELI es necesario utilizar el Aplication Manager. En ese link van a encontrar information de como crear el App id y el Secret Key.
2) Una vez que tenemos el App id (clientID) y el Secret Key(clientSecret) vamos a bajar la sdk-Java de Mercado Libre.
Para proyectos maven solamente con agregar un nuevo repositorio alcanza.
<repositories>
...
<repository>
<id>mercadolibre-snapshots</id>
<url>https://github.com/mercadolibre/java-sdk-repo/raw/master/snapshots</url>
</repository>
...
</repositories>
Y después la dependencia
<dependencies>
...
<dependency>
<groupId>com.mercadolibre</groupId>
<artifactId>sdk</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
...
</dependencies>
3) Una vez configurado su entorno vamos a proceder a realizar la comunicación con MELI.
Creamos una nueva clase llamada Site como sigue:
public class Site {
private final String id;
private final String name;
public Site(final String id, final String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Site{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
Esta clase va a contener toda la información de los Sites.
Luego creamos un SiteHandler para realizar las consultas.
public class SiteHandler {
//Nombre de los campos que vamos a obtener informacion
private static final String ID_KEY = "id";
private static final String NAME_KEY = "name";
//Creamos una unica instancia de Meli.
private final Meli meli;
private static final SiteHandler instance = new SiteHandler();
private SiteHandler() {
//Aca creamos el objecto Meli con la información de su aplicación.
meli = new Meli(clientId, clienteSecret);
}
public static SiteHandler getInstance() {
return instance;
}
public List<Site> getAllMeliSite() {
//Todos los sites.
final List<Site> newSites = new ArrayList<Site>();
try {
//Aqui realizamos la consulta de todos los sites.
final Response response = meli.get("/sites/");
//Objeto gson que sirve para "parsear" los resultados.
final Gson gson = new Gson();
//Convertimos desde JSON a Java creando una lista de StringMap
final List<StringMap<String>> sites = gson.fromJson(response.getResponseBody(), List.class);
//Convertimos los objectos StringMap a Site.
for (final StringMap<String> entries : sites) {
newSites.add(new Site(entries.get(ID_KEY), entries.get(NAME_KEY)));
}
} catch (MeliException ex) {
//Logger error en la respuesta
System.out.println("Error " + ex.getMessage());
} catch (IOException e) {
//Logger error en la transformacion usando de gson.
System.out.println("Error " + e.getMessage());
}
return newSites;
}
}
Por último creamos un objeto main para que ejecute lo anterior:
public class Main {
public static void main(String[] args) throws Exception {
final List<Site> sites = SiteHandler.getInstance().getAllMeliSite();
for (final Site site: sites) {
System.out.println(site);
}
}
}
Espero que sirva este sensillo ejemplo.
El ejemplo completo lo pueden encontrar en este link
Referencias:
https://github.com/mercadolibre/java-sdk
http://developers.mercadolibre.com/application-manager/
http://www.java2blog.com/2013/11/gson-example-read-and-write-json.html
http://developers.mercadolibre.com/api-directory/#close
Hola buenos dias, escribo porque la verdad necesito avanzar mas en este tipo de API de ML, pero la verdad es que ando como perdido en cuanto al como iniciar en este nuevo ambiente de desarrollo, estoy estancado cuando dices que debemos crear la nueva clase "public class Site", entonces mi pregunta es ¿en que fichero o proyecto creo dichas clases que mencionas?, mnuchas gracias y espero no incomodar.
ResponderEliminarHola Johan, La clase "site" y siteHandler son dos clases de ejemplo de un proyecto en java que tu puedes crear.
EliminarEn el ejemplo que detallo es para realizar una conexión usando la jdk de Meli pero dependiendo del lenguaje puedes utilizar otra.
Aquí te dejo el proyecto de ejemplo que puedes ver con mas detalles:
https://github.com/fedecoraglio/meli-java-example
La verdad lo que busco es como iniciar para desarrollar una aplicacion con la API de ML (Hacer publicaciones masivas y poder contestar preguntas desde la aplicacion). pero aun estoy como algo perdido, descargue el SDK de Java, abri el proyecto desde eclipse, examine cada parte del SDK, pero aun no encuentro la forma de iniciar, voy a la parte de "pom.xml" que se supone debo de agregar el repositorio pero me salen son unas pestañas con unos datos (Artifact,Parent,Properties,Modules,Project,Organization,SCM,Issue Management,Continues integration). Te pido que me ayudes a progresar en este nuevo desafio, estoy infinitamente agradecido porque recibi respuesta. GRACIAS!
EliminarHola buenas. Primero muchas gracias por esta aplicación de ejemplo. estoy tratando de entender como funciona.
ResponderEliminarMe baje lo que tenes aca https://github.com/fedecoraglio/meli-java-example pero hay varios import que no funcionan. y no se si esto tiene que estar en el mismo proyecto que el sdk de java (Recurso disponible de ML) o aparte, el sdk de java ya tiene los mismos import y andan. gracias!
Hola Matias, Me baje el código nuevamente y luego ejecute "mvn clean install" y compilo con éxito. Recuerda posicionarte en la carpeta meli-java-example desde una consola y ejecutar el comando de maven para bajar las dependencias. Si no lo tienes instalado te pueden fijar aqui: https://www.mkyong.com/maven/how-to-install-maven-in-windows/
EliminarLo voy a estar revisando esta semana al código cualquier cosa te escribo nuevamente, pero como te dije recién no deberías tener problemas de compilación.
Gracias por contestar. Me voy a fijar de ejecutar el mvn clean install. Las preondiciones de bajar este proyecto es tener la sdk de meli instalada ? Gracias y saludos.
EliminarNo, justamente con el mvn clean install te baja el sdk de Meli. Fijate que esta en el pom.xml
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarLogre tener las librerias instaladas! muchisisimas gracias, ahora voy por la autentificación saludos!
ResponderEliminarHola buenas, vuelvo a molestar! es una consulta, cuando modifico este pedazo de codigo:
ResponderEliminarprivate SiteHandler() {
//Aca creamos el objecto Meli con la información de su aplicación.
meli = new Meli(clientId, clienteSecret);
cambio el clienId por mi ID pero cuando lo hago me dice que estoy fuera del rango, que Meli esta definido para un int y mi ID esta fuera del rango del int, voy al codigo fuente y lo modifico? lo mismo con el clientSecret. Gracias.
Hola Matias,
EliminarProbaste con algo como esto:
meli = new Meli(123456784546546549L, "secret_key");
Me refiero de agregar al final del valor la "L" para indicarle que es un long.
Gracias!!! ahora si. el proyecto que realizaste en el main es para mostrar los sites de meli no?
ResponderEliminarHola! estoy intentando hacerlo funcionar pero me da un error con:
ResponderEliminarimport com.google.gson.internal.StringMap;
Al parecer ya no esta disponible!
y no me toma la parte del codigo:
final List> sites = gson.fromJson(response.getResponseBody(), List.class);
//Convertimos los objectos StringMap a Site.
for (final StringMap entries : sites) {
newSites.add(new Site(entries.get(ID_KEY), entries.get(NAME_KEY)));
}
Como se podría solucionar?
Hola Oscar, fijate si en esta guia podes ver la forma de pasar un JSON a un objeto java.
Eliminarhttps://medium.com/el-acordeon-del-programador/convertir-objetos-java-a-json-y-de-regreso-1077500d78f7
https://elbauldelprogramador.com/como-mapear-json-a-objetos-java-con-jackson-objectmapper/
Este código esta viejo, también fijate en la documentación ofical de Mercado libre por si algo cambio
Muchas gracias, me sirvió como punto de partida
ResponderEliminar