James Smith me salvó la vida

James Smith me ha salvado la vida y hoy voy a explicarte por qué y cómo. Todo comenzó con un proyecto de programación. Se trataba de un simple formulario web programado en HTML5 que subía un archivo a un servidor Apache corriendo con PHP.

James Smith me salvó la vida

Teníamos que hacer dos cosas: una app HTML5 y una app nativa Android. Aquella aplicación web hecha con HTML5 terminaría subiéndose posteriormente a Google Play, para que los usuarios de Android también pudieran utilizarla desde sus dispositivos móviles.

Entonces, en algún momento del desarrollo de aquel proyecto alguien pensó: lo más fácil es hacer la app en HTML5 y luego envolverla con una Android WebView. Y eso hicimos.

HTML5 y Android WebView incompatibles en algunos dispositivos móviles

Sin embargo las cosas no pueden funcionar bien a la primera, y nosotros no fuimos ninguna excepción; y nos encontramos con este pequeño problema, por así decir. ¡Las Android WebView no funcionaban bien en todos los dispositivos Android! En algunos Android simplemente no iban.

Problema a la vista

Manejar el protocolo HTTP con Java

Para dar cobertura a todos los Android la solución pues es manejar directamente el protocolo HTTP desde Java con las librerías HttpClient de Apache. El problema que nos encontramos es que precisamente en el momento en que nosotros desarrollábamos aquella aplicación, algunas partes de la API estaban siendo deprecadas (creo recordar, ahora mismo hablo de memoria).

Total, un problemón… Era la primera vez que resolvía aquel problema concreto, y recuerdo que en algún momento sentí un poco de rabia al verme perder tanto tiempo haciendo algo que con HTML5 hubiera sido muy fácil. No saqué nada provechoso de aquella pataleta, por cierto, ¡en realidad no fue nada provechosa!

Android Asynchronous Http Client

En vez de quejarme mirando el deadline me puse a buscar en Internet y fui a parar a esta librería Android construida sobre HttpClient de Apache que resuelve todos los problemas de la comunicación HTTP: subir archivos, montar objetos de parámetros GET y POST, etc.

Me gusta

A continuación comparto el trocito de código que se encarga de subir el archivo por POST. He comentado algunas partes por cuestiones de confidencialidad con el proyecto, pero ya ves que si conoces Java y Android el código se explica por sí mismo.

De nuevo, ¡muchas gracias James Smith por tu ayuda! Subir archivos con tu librería fue muy rápido y fácil.