Hoy encontré varias plataformas SMS. De hecho, el que más quiero usar es Sharesdk. Usar la función de SMS de la API HTTP no solo es bajo, sino que también puede recargar al menos 100RMB. Sin embargo, la revisión es demasiado estricta, y la aplicación correspondiente también debe integrar su función SMS, y tomará más de 20 días subir y revisar. Solo quiero encontrar una plataforma SMS para probarlo, por lo que se olvida. Luego tomé una plataforma de mensajes de texto aleatorio en Baidu en www.wasun.cn. Sentí que no era malo por el momento. Al menos la cuenta de prueba que dio no recibió mensajes de texto durante más de 5 segundos. Lo miré y generalmente eran 3 segundos o incluso más rápido. A continuación, hablaré sobre el método de llamar a la interfaz SMS y los problemas encontrados durante el uso.
1. Método de solicitud de método httprequest
El Domo que dio está realmente encapsulado, que se utiliza para solicitar httpclient. Ha usado esta clase en .NET antes, y también está la clase HttpWebRequest en .NET. Miré el código en Java y su función debería encapsularse en la clase de UrlConnection. Debido al tiempo y los métodos de encapsulación, no he estudiado investigaciones en profundidad en Internet, pero debería tener el mismo significado que HTTPWebRequest en .NET. Se publica el siguiente código, incluido el código de la clase HTTPClient de generación de demostración.
paquete ayudante; import java.io.bufferedReader; import java.io.ioException; import java.io.inputstreamreader; import java.io.printwriter; import java.io.unsupportedEncodingException; import java.net.url; import java.net.url; import java.net.urLconnection; import javil.util.util.util.util.util.Util. java.util.map; clase pública httprequest { /** * Enviar la solicitud de método Get a la url especificada * * @param url * url para enviar la solicitud * @param param * Parámetros de solicitud, los parámetros de solicitud deben estar en forma de nombre1 = value1 & name2 = value2. * @return URL Resultado Resultado del recurso remoto representado por el recurso remoto*/ public static string sendget (string url, string param) {string dult = ""; BufferedReader en = NULL; Prueba {String urlnameString = url + "?" + Param; Url realUrl = nueva url (urlamestring); // Abra la conexión entre la conexión URL URLConnection = RealUrl.openconnection (); // Establecer el atributo de solicitud general Connection.SetRequestProperty ("Aceptar", "*/*"); conexión.setRequestProperty ("Conexión", "Keep-Alive"); Connect.SetRequestProperty ("AGENT DE USUARIO", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); // crear una conexión real de conexión.connect (); // Obtener todos los campos de encabezado de respuesta MAP <String, List <String>> MAP = Connection.GetheaderFields (); // Traverse todos los campos de encabezado de respuesta para (clave de cadena: map.keyset ()) {system.out.println (clave + "--->" + map.get (key)); } // Defina la secuencia de entrada de BufferedReader para leer la respuesta de la URL en = new BufferedReader (new InputStreamReader (Connection.GetInputStream ())); Línea de cadena; while ((line = in.readline ())! = null) {resultado += línea; }} Catch (Exception e) {System.out.println ("La excepción ocurrió al enviar una solicitud GET!" + E); E.PrintStackTrace (); } // Use finalmente bloquear para cerrar el flujo de entrada finalmente {try {if (in! = Null) {in.close (); }} catch (Exception e2) {e2.PrintStackTrace (); }} Resultado de retorno; } /** * Envíe una solicitud a la URL especificada * @param URL * URL para enviar la solicitud * @param parámetro * Parámetro de solicitud, el parámetro de solicitud debe estar en forma de nombre1 = valor1 & name2 = value2. * @return Resultado de respuesta del recurso remoto representado por */ public static String sendPost (String url, string param) {printWriter out = null; BufferedReader en = NULL; Resultado de cadena = ""; intente {url realUrl = new url (url); // Abra la conexión entre UrlConnection Conn = RealUrl.openconnection (); // Establecer el atributo de solicitud general conn.setRequestProperty ("aceptar", "*/*"); conn.setRequestProperty ("Conexión", "mantener alive"); Conn.setRequestProperty ("AGENT DE USUARIO", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); // Para enviar una solicitud de publicación, debe establecer las siguientes dos líneas en conn.setDoOutput (verdadero); Conn.setDoInput (verdadero); // Obtenga la secuencia de salida correspondiente al objeto de UrlConnection out = new PrintWriter (conn.getOutputStream ()); // Enviar el parámetro de solicitud out.print (param); // buffer out.flush () de la secuencia de salida de descarga; // Defina la secuencia de entrada de BufferedReader para leer la respuesta de URL en = new BufferedReader (new InputStreamReader (conn.getInputStream ())); Línea de cadena; while ((line = in.readline ())! = null) {resultado += línea; }} Catch (Exception e) {System.out.println ("¡Se produjo una excepción al enviar una solicitud posterior!" +E); E.PrintStackTrace (); } // Use finalmente bloqueos para cerrar la secuencia de salida y la secuencia de entrada finalmente {try {if (out! = Null) {out.close (); } if (in! = null) {in.close (); }} catch (ioException ex) {ex.printStackTrace (); }} try {result = new String (result.getBytes ("ISO8859-1"), "UTF-8"); } Catch (UnsupportedEnCodingException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } resultado de retorno; }}2. Código de solicitud de método oficial de demo httpClient
// import java.io.fileInputStream; // import java.io.filenotfoundexception; import java.io.ioexception; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.httpexception; importar; importación; org.apache.commons.httpclient.nameValuePair; import org.apache.commons.httpclient.methods.postmethod; import org.dom4j.document; import org.dom4j.documentException; import og.dom4j.documenthelper; importar org.dom4j.Element; clase pública Sendsms {String static privado url = "http://121.199.? public static void main (string [] args) {httpclient client = new httpClient (); Método postmethod = nuevo postmetod (url); //client.getParams().setContentCharset("gbk "); Client.getParams (). SetContentCharset ("UTF-8"); Method.SetRequestHeader ("ContentType", "Application/X-WWW-Form-URLENCODED; Charset = UTF-8"); String content = new String ("Su código de verificación es: 7528. No filtre el código de verificación a otros"); NameValuePair[] data = {//Submit SMS new NameValuePair("account", "user name"), new NameValuePair("password", "password"), //Password can be encrypted using plaintext password or 32-bit MD5 //new NameValuePair("password", util.StringUtil.MD5Encode("password")), new NameValuePair ("móvil", "número móvil"), nuevo nameValuePair ("contenido", contenido),}; Method.SetRequestBody (datos); intente {client.executemethod (método); Cadena submitresult = método.getResponseBodyAsstring (); //System.out.println(SubmitResult); Documento doc = documentHelper.Parsetext (SubmitResult); Elemento root = doc.getRootElement (); Código de cadena = root.elementText ("código"); Cadena msg = root.elementText ("msg"); Cadena smsid = root.elementText ("smsid"); System.out.println (código); System.out.println (MSG); System.out.println (SMSID); if (code == "2") {System.out.println ("SMS envío exitoso"); }} Catch (httpException e) {// tODO BLOQUE DE CABTA GENERADA AUTO } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } catch (DocumentException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} 0 3. Llame al código HTTPRequest encapsulado
String PhonEMessageParameter = new String ("cuenta =? & Password = wxhdcs@456 & content = su código de verificación es: [variable]. No filtre el código de verificación a otros. & Mobile =? & STEME = 2012-08-01%208: 20: 23 & SIGN =? & Tipo = Pt & ExtNo ="); String returnResult = httprequest.sendPost ("http://121.?Si usa esta plataforma, debe prestarle atención. El nombre del parámetro en su documento oficial es incorrecto, la demostración es correcta y su interfaz está escrita en el servidor web. No devuelve datos JSON o XML, sino una página HTML estándar, y luego todos los contenidos requeridos se escriben en las etiquetas en el HTML. Si se trata de un contenido de contenido de prueba, el parámetro debe escribirse como se especifica, de lo contrario se informará un error. Si lo compra oficialmente, puede establecer el contenido de la plantilla usted mismo.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.