Hoje eu encontrei várias plataformas SMS. De fato, o que eu mais quero usar é o Sharesdk. O uso da função SMS da API HTTP nele não é apenas baixo, mas também pode recarregar pelo menos 100RMB. No entanto, a revisão é muito rigorosa e o aplicativo correspondente também deve integrar sua função SMS e levará mais de 20 dias para fazer upload e revisão. Eu só quero encontrar uma plataforma SMS para testá -la, por isso é esquecido. Então eu acabei de pegar uma plataforma de mensagem de texto aleatória no Baidu em www.wasun.cn. Eu senti que não era ruim por enquanto. Pelo menos a conta de teste que deu não recebeu mensagens de texto por mais de 5 segundos. Eu olhei para ele e geralmente eram 3 segundos ou até mais rápido. Em seguida, falarei sobre o método de chamar a interface SMS e os problemas encontrados durante o uso.
1. Método HttPrequest Método
O domo que ele deu é realmente encapsulado, que é usado para solicitar httpclient. Ele já usou essa aula no .NET antes, e também há a classe httpwebrequest na .NET. Eu olhei para o código em Java e sua função deve ser encapsulada na classe URLConnection. Devido aos métodos de tempo e encapsulamento, não estudei pesquisas aprofundadas na Internet, mas deve ter o mesmo significado que httpwebrequest na .NET. O código a seguir é publicado, incluindo o código da classe HTTPClient de geração de demonstração.
Helper de pacote; importar java.io.bufferedReader; importar java.io.ioException; importar java.io.inputStreamReader; importar java.io.printwriter; importar java.io.unsupportEdEncodingException; import java.net.url; import java.net.bodingException; java.util.map; classe pública httprequest { /** * Envie a solicitação de método GET para o url especificado * * @param url * url para enviar a solicitação * @param param * parâmetros de solicitação, os parâmetros de solicitação devem estar no formulário de nome1 = value1 e nome2 = valor2. * @return URL Resultado do recurso remoto representado pelo recurso remoto*/ public static string sendget (string url, string param) {string result = ""; BufferredReader in = null; tente {string urlnamestring = url + "?" + param; Url realurl = novo url (urlnamestring); // Abra a conexão entre a conexão de URLConnection URL = realUrl.Openconnection (); // Defina o atributo de solicitação geral Connection.SetRequestProperty ("aceitar", "*/*"); Connection.SetRequestProperty ("Connection", "Keep-Alive"); Connection.setRequestProperty ("User-Agent", "Mozilla/4.0 (compatível; MSIE 6.0; Windows NT 5.1; Sv1)"); // Crie uma conexão de conexão real.connect (); // Obtenha todos os campos de cabeçalho de resposta mapa <string, list <string>> map = Connection.getheadeRFields (); // Atravesse todos os campos de cabeçalho de resposta para (chave de string: map.keyyset ()) {System.out.println (key + "--->" + map.get (key)); } // Defina o fluxo de entrada do BufferErader para ler a resposta do URL em = new BufferredReader (new InputStreamReader (Connection.getInputStream ())); Linha de string; while ((line = in.readline ())! = null) {resultado += line; }} Catch (Exceção e) {System.out.println ("Exceção ocorreu ao enviar uma solicitação GET!" + E); E.PrintStackTrace (); } // Use finalmente bloco para fechar o fluxo de entrada finalmente {tente {if (in! = Null) {in.close (); }} Catch (Exceção E2) {E2.PrintStackTrace (); }} Retornar resultado; } /** * Envie uma solicitação para o URL especificado * @param url * url para enviar a solicitação * @param param * parâmetro de solicitação, o parâmetro de solicitação deve estar na forma de nome1 = value1 & name2 = value2. * @return Resposta Resultado do recurso remoto representado por */ public static string sendPost (String url, string param) {printWriter out = null; BufferredReader in = null; String result = ""; tente {url realurl = novo url (url); // Abra a conexão entre urlConnection Conn = realUrl.Openconnection (); // Defina o atributo de solicitação geral Conn.SetRequestProperty ("Aceitar", "*/*"); Conn.SetRequestProperty ("Connection", "Keep-Alive"); Conn.SetRequestProperty ("User-Agent", "Mozilla/4.0 (compatível; MSIE 6.0; Windows NT 5.1; Sv1)"); // Para enviar uma solicitação de postagem, você deve definir as duas linhas a seguir para Conn.SetDoOutput (true); Conn.SetDoinput (true); // Obtenha o fluxo de saída correspondente ao objeto URLConnection out = new PrintWriter (Conn.getOutputStream ()); // Envie o parâmetro de solicitação para fora.print (param); // buffer out.flush () do fluxo de saída de descarga; // Defina o fluxo de entrada do BufferReader para ler a resposta do URL em = new BufferredReader (new InputStreamReader (Conn.getInputStream ())); Linha de string; while ((line = in.readline ())! = null) {resultado += line; }} catch (Exceção e) {System.out.println ("Exceção ocorreu ao enviar uma solicitação de postagem!" +e); E.PrintStackTrace (); } // Use finalmente blocos para fechar o fluxo de saída e o fluxo de entrada finalmente {tente {if (out! = Null) {out.close (); } if (in! = null) {in.close (); }} catch (ioexception ex) {ex.printStackTrace (); }} tente {resultado = new String (resultado.getBytes ("ISO8859-1"), "UTF-8"); } Catch (UnsupportEdEnCodingException e) {// TODO BLOCO DE CATAGEM AUTOGERATO E.PRINTSTACKTRACE (); } resultado de retorno; }}2. Código de solicitação de método de demonstração oficial HTTPClient
// importar java.io.fileInputStream; // importar java.io.filenotfoundException; importar java.io.ioexception; importar org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.httPexcents; org.apache.commons.httpclient.nameValuepair; importar org.apache.commons.httpclient.methods.postmethod; importar org.dom4j.document; importação org.dom4j.documentException; importância org.dom4j.documentHelper; importar org.dom4j.Element; classe pública se envia {private static string url = "http://121.199. ?178/webservice/sms.php?method=submit"; public static void main (string [] args) {httpclient client = new httpclient (); Método post -method = novo pós -método (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 ("Seu código de verificação é: 7528. Por favor, não vaze o código de verificação para outras pessoas."); 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("mobile", "mobile número "), new NameValuepair (" Content ", Content),}; métod.setRequestbody (dados); tente {client.executemethod (método); String submitresult = method.getResponseBodyAsstring (); //System.out.println(submitresult); Documento doc = documenthelper.parseText (submitresult); Elemento root = doc.getrootelement (); String code = root.ElementText ("código"); String msg = root.ElementText ("msg"); String smsid = root.ElementText ("smsid"); System.out.println (código); System.out.println (msg); System.out.println (smsid); if (code == "2") {System.out.println ("SMS Submission bem -sucedido"); }} Catch (httPexception e) {// TODO BLOCO DE CATAGEM AUTOGERATION E.PRINTSTACKTRACE (); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); } Catch (DocumentException e) {// TODO BLOCO DE CATCH AUTOGERATION E.PRINTSTACKTRACE (); }} 0 3. Ligue para o código HTTPrequest encapsulado
String PhoneMessageParameter = new String ("Account =? & Password = wxhdcs@456 & Content = Seu código de verificação é: [variável]. Não vaze o código de verificação para outros. & Mobile =? & STIME = 2012-08-01%208: 20: 23 & signo returnResult = httprequest.sendPost ("http://121.?.16.178/webservie/sms.php?method=submit", PhoneMessageParameter); out.println ("<Ing> alert ("+returrSult+");Se você usar esta plataforma, deve prestar atenção a ela. O nome do parâmetro em seu documento oficial está errado, a demonstração está correta e sua interface é escrita no servidor da web. Ele retorna os dados não JSON ou XML, mas uma página HTML padrão e, em seguida, todo o conteúdo necessário são gravados nas tags no HTML. Se for um conteúdo de teste, o parâmetro deve ser escrito conforme especificado, caso contrário, um erro será relatado. Se você comprá -lo oficialmente, poderá definir o conteúdo do modelo.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.