Aujourd'hui, j'ai trouvé plusieurs plates-formes SMS. En fait, celui que je veux utiliser le plus est SHARESDK. L'utilisation de la fonction API HTTP SMS est non seulement faible, mais elle peut également recharger au moins 100RMB. Cependant, l'examen est trop strict et l'application correspondante doit également intégrer leur fonction SMS, et il faudra plus de 20 jours pour télécharger et réviser. Je veux juste trouver une plate-forme SMS pour la tester, donc elle est oubliée. Ensuite, je viens de prendre une plate-forme de message texte aléatoire sur Baidu sur www.wasun.cn. Je sentais que ce n'était pas mal pour le moment. Au moins, le compte de test qu'il a donné n'a pas reçu de SMS pendant plus de 5 secondes. Je l'ai regardé et c'était généralement 3 secondes ou même plus vite. Ensuite, je parlerai de la méthode d'appel de l'interface SMS et des problèmes rencontrés lors de l'utilisation.
1. Méthode de demande de méthode httprequest
Le domo qu'il a donné est en fait encapsulé, qui est utilisé pour demander httpclient. Il a déjà utilisé cette classe dans .NET, et il y a aussi la classe httpwebRequest dans .NET. J'ai regardé le code en Java et sa fonction devrait être encapsulée dans la classe d'UrlConnection. En raison de méthodes de temps et d'encapsulation, je n'ai pas étudié des recherches approfondies sur Internet, mais elle devrait avoir la même signification que HttpWeBrequest dans .NET. Le code suivant est publié, y compris le code de la classe HttpClient de génération de démonstration.
Helper à forfait; Importer java.io.bufferedReader; import java.io.ioexception; import java.io.inputStreamReader; import java.io.printwriter; import java.io.unsuppordedencomexception; import java.net.url; importer java.net.url; import; java.util.map; classe publique HttpRequest {/ ** * Envoyez la demande de méthode GET à l'URL spécifiée * * @param URL * URL pour envoyer la demande * @param param * des paramètres de demande, les paramètres de demande doivent être sous la forme de nom1 = valeur1 & name2 = valeur2. * @return URL Résultat Résultat de la ressource distante représentée par la ressource distante * / public static String sendGet (String URL, String Param) {String result = ""; BufferedReader dans = null; essayez {String urlNmestring = url + "?" + param; URL REALURL = NOUVELLE URL (URLNAMESTRING); // Ouvrez la connexion entre la connexion URL URLConnection = realUrl.OpenConnection (); // Définissez la connexion d'attribut de demande générale.SetRequestProperty ("accepter", "* / *"); connection.setRequestProperty ("connexion", "keep-alive"); connection.setRequestProperty ("User-Agent", "Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); // Créer une connexion de connexion réelle.Connect (); // Obtenez tous les champs d'en-tête de réponse map <string, list <string >> map = connection.geTheaderFields (); // Traverse tous les champs d'en-tête de réponse pour (clé de chaîne: map.KeySet ()) {System.out.println (key + "--->" + map.get (key)); } // Définissez le flux d'entrée BufferedReader pour lire la réponse de l'URL dans = new BufferedReader (new InputStreamReader (connection.getInputStream ())); Ligne de chaîne; while ((line = in.readline ())! = null) {result + = line; }} catch (exception e) {System.out.println ("Exception s'est produite lors de l'envoi d'une demande de GET!" + E); e.printStackTrace (); } // Utiliser enfin le bloc pour fermer le flux d'entrée enfin {try {if (in! = Null) {in.close (); }} catch (exception e2) {e2.printStackTrace (); }} Retour Résultat; } / ** * Envoyez une demande à l'URL spécifiée * @param URL * URL pour envoyer la demande * @param paramètre param * de la demande, le paramètre de demande doit être dans le formulaire de name1 = value1 & name2 = value2. * @return Résultat Résultat de la ressource distante représentée par * / public static String sendPost (URL de chaîne, chaîne param) {printwriter out = null; BufferedReader dans = null; Résultat de chaîne = ""; essayez {url realUrl = new url (url); // Ouvrez la connexion entre UrlConnection Conn = realUrl.OpenConnection (); // Définissez l'attribut général de la demande Conn.SetRequestProperty ("accepter", "* / *"); Conn.SetRequestProperty ("Connexion", "Keep-Alive"); Conn.SetRequestProperty ("User-Agent", "Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); // Pour envoyer une demande de poste, vous devez définir les deux lignes suivantes sur Conn.SetDoOutput (true); Conn.SetDoInput (true); // obtient le flux de sortie correspondant à l'objet UrlConnection OUT = new printwriter (conn.getOutputStream ()); // Envoyez le paramètre de demande Out.print (param); // tampon out.flush () du flux de sortie de flux; // Définissez le flux d'entrée BufferedReader pour lire la réponse URL dans = new BufferedReader (new InputStreamReader (Conn.getInputStream ())); Ligne de chaîne; while ((line = in.readline ())! = null) {result + = line; }} catch (exception e) {System.out.println ("Exception s'est produite lors de l'envoi d'une demande post!" + E); e.printStackTrace (); } // Utiliser les blocs enfin pour fermer le flux de sortie et le flux d'entrée enfin {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 (UnportEnCoDingException e) {// Bloc de catch généré automatiquement de TODO E.PrintStackTrace (); } Retour Résultat; }}2. Code de demande de méthode HttpClient officiel HttpClient
// Importer java.io.fileInputStream; // Importer java.io.filenotfoundException; import java.io.ioexception; import org.apache.comons.httpclient.httpclient; import org.apache.commons.httpclient.httpexect; org.apache.commons.httpclient.namevaluepair; import org.apache.commons.httpclient.methods.postMethod; import org.dom4j.document; import org.dom4j.documentException; import org.dom4j.DocumentHelper; import org.dom4j.element; classe publique Sendsms {private static string url = "http://121.199.?.178/webservice/sms.php?Method=Submit"; public static void main (String [] args) {httpClient client = new httpClient (); Méthode post-méthode = nouveau post-méthode (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 ("Votre code de vérification est: 7528. Veuillez ne pas fuir le code de vérification à d'autres."); NameValuepair [] data = {// soumettre sms new nameValuepair ("compte", "nom d'utilisateur"), new nameValuepair ("mot de passe", "mot de passe"), // mot de passe peut être crypté à l'aide de mot de passe en texte clair ou 32 bits md5 // new nameValuepair ("mot de passe", ultringutil.md5encode ("mot de passe"), new ", ultringutil.md5encode (" mot de passe "), new" NameValuepair ("mobile", "numéro mobile"), new NameValuepair ("Content", Content),}; Method.SetRequestbody (données); essayez {client.execureMethod (méthode); String soumeResult = Method.getResponseBodyAsstring (); //System.out.println(SubmitResult); Document doc = documentHelper.PaSeText (soumersult); Élément root = doc.getrootelement (); String code = root.elementText ("code"); String msg = root.elementText ("msg"); String SMSID = root.ElementText ("SMSID"); System.out.println (code); System.out.println (msg); System.out.println (SMSID); if (code == "2") {System.out.println ("SMS Soumission réussie"); }} catch (httpexception e) {// Bloc de catch généré automatiquement de TODO E.PrintStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (DocumentException e) {// TODO Bloc de catch généré automatiquement e.printStackTrace (); }} 0 3. Appelez le code HttpRequest encapsulé
String phonEMSageParameter = new String ("account =? & Mot de passe = wxhdcs @ 456 & content = Votre code de vérification est: [variable]. Veuillez ne pas fuir le code de vérification à d'autres. & Mobile =? & Stime = 2012-08-01% 208: 20: 23 & signe =? & Type = pt & extNo ="); returnResult = httprequest.sendPost ("http://121.?.16.178/webservice/sms.php?method=Submit", phoneMessageParamètre); out.println ("<cript> alert (" + returnResult + "); </script>");Si vous utilisez cette plate-forme, vous devez y faire attention. Le nom du paramètre dans son document officiel est mauvais, la démo est correcte et son interface est écrite en serveur Web. Il ne renvoie pas les données JSON ou XML, mais une page HTML standard, puis tous les contenus requis sont écrits dans les balises du HTML. S'il s'agit d'un contenu de contenu de test, le paramètre doit être écrit comme ils ont spécifié, sinon une erreur sera signalée. Si vous l'achetez officiellement, vous pouvez définir le contenu du modèle par vous-même.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.