Este capítulo es la primera parte del envío de mensajes de texto. Hablemos del código para enviar mensajes de texto sincrónicamente/asincrónicamente. En los próximos artículos, mejoraremos ligeramente las funciones y agregaremos el límite de la frecuencia de envío y los tiempos de envío diarios.
Puede haber muchas formas de enviar mensajes de texto. Nuestro método es utilizar los servicios proporcionados por el proveedor de servicios. En términos generales, estos servicios son libres de idiomas. Aquí usamos Java para escribir programas de muestra.
1. Interfaz para enviar mensajes de texto <Br /> Seleccione un proveedor de servicios de acuerdo con su propia situación.
2. Documento de desarrollo <Br /> Podemos ver desde el documento de desarrollo. Puede usar solicitudes HTTP directamente o solicitudes de servicio web para enviar mensajes de texto. Dado que el código en las carpetas Java y JSP en la carpeta de demostración usa solicitudes HTTP para enviar mensajes de texto. Así que no entraré en detalles aquí. Utilizamos WebService para demostrar el envío de mensajes de texto.
3. Generar código de cliente
Desde el documento de la interfaz, sabemos que la URL de su WebService WSDL es: http://106.ihuyi.cn/webservice/sms.php?wsdl, entonces podemos ejecutar el siguiente comando para generar el código del cliente:
WSIMPORT -Mantener http://106.ihuyi.cn/webservice/sms.php?wsdl
Entre ellos, WSIMPORT es una herramienta que viene con JDK, y la opción de URL de mantenimiento es "Mantener los archivos generados". Este comando generará sms.cn.ihuyi._106 paquetes en el directorio actual, así como en muchas clases. A continuación, comience a escribir nuestro propio código.
4. Defina la interfaz
Por conveniencia, aquí primero definimos una interfaz:
SMS.Java
Public Interface SMS { / ** * Enviar un SMS al móvil, el contenido es mensaje * * @param Número de teléfono móvil * @param Contenido de SMS * @Return Devuelve con éxito -1, de lo contrario devuelve otro valor * / int sendMessage (string mobile, string mensaje);}Esta interfaz es muy simple, solo hay un método. Este método se utiliza para enviar mensajes de texto.
5. Enviar mensajes de texto simultáneamente
A continuación, primero implementamos una clase que envía SMS sincrónicamente:
Ihuyismsimpl.java
clase pública IhuyismSimpl implementa SMS {cuenta de cadena privada; contraseña de cadena privada; public void setAcCount (cuenta de cadena) {this.account = cuenta; } public void setPassword (String Password) {this.password = contraseña; } @Override public int SMSSOAP SMSSOAP = factory.getSmsSoap (); Subtitresult Subt = smssoap.submit (cuenta, contraseña, móvil, mensaje); int code = Subt.getCode (); if (código == 2) {return -1; } System.out.println ("Enviar SMS fallido, código:" + código); código de retorno; }}En la línea 17, obtenemos un objeto proxy del objeto remoto. Luego podemos enviar SMS, consultar el saldo de la cuenta y otras operaciones a través de este objeto proxy.
En la línea 18, el contenido de SMS se envía utilizando el método de envío del objeto proxy. La información del parámetro y el significado de valor de retorno del método se explican en detalle en el documento de interfaz.
En la línea 19, obtenemos el código de estado del resultado. De acuerdo con las instrucciones en el documento, el código de estado es 2, lo que indica que el envío es exitoso. Para simplificar, solo nos centramos en la situación en la que la sumisión es exitosa. Cabe señalar que el código de estado es 2, solo que indica que el envío es exitoso. Según el sitio web oficial "respuesta dentro de 3-5 segundos, llegada al 100%" al sitio web oficial, podemos inferir. Si la presentación es exitosa, básicamente el SMS se enviará con éxito dentro de los 3-5 segundos. Según la situación de la red del usuario, el usuario puede recibir el SMS con un ligero retraso.
También es muy simple usar este código para enviar mensajes de texto. Puede directamente nuevo un objeto, establecer su cuenta y contraseña y enviar mensajes de texto.
6. Envíe mensajes de texto asincrónicamente
Dado que enviar SMS implica comunicación de red, el método SendMessage puede tener algún retraso. Para mejorar la experiencia del usuario, podemos usar el método para enviar SMS de manera asincrónica. El principio es muy simple: si el usuario solicita enviar SMS, en lugar de llamar directamente al método SendMessage de IhuyismSimpl, guardamos la solicitud (Productor) y luego le decimos al usuario: El SMS se envía correctamente. Después de eso, varios consumidores sacan la tarea y llaman al método SendMessage para enviar SMS.
Aquí, uso el grupo de subprocesos para completar la tarea anterior:
Asyncsmsimpl.java
public class AsyncSmsImpl implementa SMS {Public SMS sendSms; Private ExecutorService EjecutorService = Ejecutors.NewFixedThreadPool (3); public void setSendsms (SMS SendSms) {this.sendsms = sendsms; } @Override public int sendMessage (String Mobile, String Message) {try {ExecutorService.subMit (() -> sendsms.sendMessage (mobile, mensaje)); } capt (excepción e) {sysemt.out.println ("El error ocurrió al enviar la tarea" + e); regresar 0; } return -1; } public void destruye () {try {ExecutorService.shutdown (); } catch (excepción e) {}}}El código es muy simple. Puede agregar directamente el método SendMessage (Mobile, Mensaje) de la interfaz SMS a la cola de tareas del grupo de subprocesos como tarea. De esta manera, cuando hay hilos gratuitos, sendsms.sendMessage (móvil, mensaje) se ejecutará para enviar SMS. Aquí suponemos que siempre que se guarde en el grupo de subprocesos, puede enviar con éxito SMS. Porque enviar un fracaso es realmente raro.
Enviar mensajes de texto sincrónicamente/asíncronamente se completa. En los próximos artículos, echaremos un vistazo a algunas restricciones comunes, como: solo puede enviar una vez por minuto, solo puede enviar 5 veces al día, etc.
Espero que a todos les guste este artículo.