Envío de un sms wap push en java

En una entrada anterior vimos como realizar la integración de envío de sms mediante java. En esta entrada se pretende replicar el ejemplo para el caso de lo que se quiera enviar sea un sms de tipo wap push.

Una vez más, recalcamos que para que funcione este ejemplo es necesario contratar los servicios de  un proveedor de envío masivo de sms que permita la integración sms de nuestra aplicación. Utilizaremos la sms gateway de envío de Altiria.

El envío del sms de tipo wap push se realiza con este proveedor mediante una petición POST a su servidor con los datos del sms wap push que se quiere enviar como parámetros de la propia petición, siendo los más importantes la url de destino, el texto de alerta que aparecerá en el teléfono móvil y los destinatarios. Se puede encontrar el documento de especificaciones de la conexión también en su web.

La misión del programa Java para enviar SMS será por tanto conectarse de algún modo al proveedor elegido (HTTP, SMTP…) y pasarle los datos del sms en algún formato (con los propios parámetros de HTTP, con un xml…).

Ya tenemos el proveedor y el mecanismo de envío (HTTP). Ya sólo queda implementar esta conexión HTTP en nuestro programa Java. Para ello necesitamos un cliente HTTP para realizar la conexión. Hemos elegido la librería HTTP de Jakarta, (HttpClient) que debe estar presente en el classpath de nuestra aplicación. El siguiente código realiza la conexión enviando los parámetros del sms.

El código no envía realmente el sms wap push, ya que para hacer pruebas reales, es necesario contratar un bono de créditos de envío con el proveedor sms que permita la integración.

//Se inicia el objeto HTTP
HttpClient client = new HttpClient();
client.setStrictMode(true);
//Se fija el tiempo máximo de espera de la respuesta del proveedor sms
client.setTimeout(60000);
//Se fija el tiempo máximo de espera para conectar con el proveedor sms
client.setConnectionTimeout(5000);
PostMethod post = null;
//Se fija la URL sobre la que enviar la petición POST
 
//Como ejemplo se supone www.pasarela_push_altiria.com/post/sms
post = new PostMethod("http://www.pasarela_push_altiria.com/post/sms");
 
//Se fija la codificación de caracteres en la cabecera de la petición
post.setRequestHeader("Content-type",
   "application/x-www-form-urlencoded; charset=UTF-8");
 
//Se crea la lista de parámetros a enviar en la petición POST
NameValuePair[] parametersList = new NameValuePair[4];
parametersList[0] = new NameValuePair("dest", "34600111222");
parametersList[1] = new NameValuePair("dest", "34600111333");
parametersList[2] = new NameValuePair("msg", "Alerta de contenido sms");
parametersList[2] = new NameValuePair("url", "http://www.pasarelasms.com/pasarelasms/contenido");
 
//Se rellena el cuerpo de la petición POST con los parámetros
post.setRequestBody(parametersList);
int httpstatus = 0;
String response = null;
 
try {
//Se envía la petición
httpstatus = client.executeMethod(post);
//Se consigue la respuesta
response = post.getResponseBodyAsString();
}
catch (Exception e) {
//Habrá que prever la captura de excepciones
return;
}
finally {
//En cualquier caso se cierra la conexión
post.releaseConnection();
}
 
//Habrá que prever posibles errores en la respuesta del servidor
if (httpStatus!=200){
return;
}
else {
//Se procesa la respuesta capturada en la cadena ‘‘response’’
}

Este código se traduce en el envío de un sms wap push con la alerta “Alerta de contenido sms” y la url “http://www.pasarelasms.com/pasarelasms/contenido” a los móviles 34600111222 y 34600111333.

Enviar sms desde java mediante http

Publicado en Enviar sms | Etiquetas: , , ,

En esta entrada os mostraremos cómo enviar sms desde Java.

Integrar sms en una aplicación es una funcionalidad que en algún momento algún cliente puede querer, como por ejemplo para comunicarse con sus propios clientes, enviar una alerta en determinadas ocasiones, etc…

La integración del envío del sms necesita un proveedor fiable. Un proveedor de sms sirve de intermediario entre nuestra aplicación Java y los operadores de telefonía móvil.

Utilizaremos la pasarela de envío de sms masivo de Altiria.

El envío de sms se realiza con este proveedor mediante una petición POST al servidor de Altiria con los datos del sms que se quiere enviar como parámetros de la propia petición, siendo los más importantes el contenido del sms y los destinatarios. Se puede encontrar el documento de especificaciones de la conexión también en su web.

La misión del programa Java será por tanto conectarse de algún modo al proveedor elegido (HTTP, SMTP…) y pasarle los datos del sms en algún formato (con los propios parámetros de HTTP, con un xml…).

Ya tenemos el proveedor y el mecanismo de envío (HTTP). Ya sólo queda implementar esta conexión HTTP en nuestro programa Java. Para ello necesitamos un cliente HTTP para realizar la conexión. Hemos elegido la librería HTTP de Jakarta, (HttpClient) que debe estar presente en el classpath de nuestra aplicación. El siguiente código realiza la conexión enviando los parámetros del sms en Java.

El código no envía realmente el sms, ya que para hacer pruebas reales, es necesario contratar un bono de créditos de envío con el proveedor.

//Se inicia el objeto HTTP
HttpClient client = new HttpClient();
client.setStrictMode(true);
//Se fija el tiempo máximo de espera de la respuesta del servidor
client.setTimeout(60000);
//Se fija el tiempo máximo de espera para conectar con el servidor
client.setConnectionTimeout(5000);
PostMethod post = null;
//Se fija la URL sobre la que enviar la petición POST
 
//Como ejemplo se supone www.pasarela_push_altiria.com/post/sms
post = new PostMethod("http://www.pasarela_push_altiria.com/post/sms");
 
//Se fija la codificación de caracteres en la cabecera de la petición
post.setRequestHeader("Content-type",
   "application/x-www-form-urlencoded; charset=UTF-8");
 
//Se crea la lista de parámetros a enviar en la petición POST
NameValuePair[] parametersList = new NameValuePair[3];
parametersList[0] = new NameValuePair("dest", "34600111222");
parametersList[1] = new NameValuePair("dest", "34600111333");
parametersList[2] = new NameValuePair("msg", "Mensaje de prueba");
 
//Se rellena el cuerpo de la petición POST con los parámetros
post.setRequestBody(parametersList);
int httpstatus = 0;
String response = null;
 
try {
//Se envía la petición
httpstatus = client.executeMethod(post);
//Se consigue la respuesta
response = post.getResponseBodyAsString();
}
catch (Exception e) {
//Habrá que prever la captura de excepciones
return;
}
finally {
//En cualquier caso se cierra la conexión
post.releaseConnection();
}
 
//Habrá que prever posibles errores en la respuesta del servidor
if (httpStatus!=200){
return;
}
else {
//Se procesa la respuesta capturada en la cadena ‘‘response’’
}

Este código se traduce en el envío de un sms con el texto “Mensaje de Prueba” a los móviles 34600111222 y 34600111333.