اليوم وجدت العديد من منصات الرسائل القصيرة. في الواقع ، فإن الشخص الذي أريد استخدامه هو الأسهم. إن استخدام وظيفة HTTP API SMS عليها ليس منخفضًا فحسب ، بل يمكن أيضًا إعادة شحن ما لا يقل عن 100rmb. ومع ذلك ، فإن المراجعة صارمة للغاية ، ويجب أن يدمج التطبيق المقابل أيضًا وظيفة الرسائل القصيرة الخاصة بهم ، وسيستغرق التحميل والمراجعة أكثر من 20 يومًا. أريد فقط أن أجد منصة SMS لاختبارها ، لذلك يتم نسيانها. ثم أخذت للتو منصة رسائل نصية عشوائية على Baidu على www.wasun.cn. شعرت أنه لم يكن سيئًا في الوقت الحالي. على الأقل ، لم يتلق حساب الاختبار الذي قدمه رسائل نصية لأكثر من 5 ثوان. نظرت إليه وكان عادة 3 ثوان أو حتى أسرع. بعد ذلك ، سأتحدث عن طريقة استدعاء واجهة الرسائل القصيرة والمشاكل التي واجهتها أثناء الاستخدام.
1. طريقة طلب HTTPREQUEST
يتم تغليف Domo الذي قدمه بالفعل ، والذي يستخدم لطلب httpclient. لقد استخدم هذا الفصل في .NET من قبل ، وهناك أيضًا فئة HTTPWebRequest في .NET. نظرت إلى الكود في Java ويجب تغليف وظيفته في فئة urlconnection. نظرًا للوقت والطرق التغليف ، لم أدرس البحث المتعمق على الإنترنت ، ولكن يجب أن يكون له نفس المعنى مثل httpwebrequest في .NET. يتم نشر الرمز التالي ، بما في ذلك رمز فئة HTTPClient من الجيل التجريبي.
مساعد الحزمة استيراد java.io.bufferedReader ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstreamreader ؛ استيراد java.io.printwriter ؛ استيراد java.io.unsupportedencodingexception ؛ استيراد java.net.url ؛ import java.net java.util.list ؛ استيراد java.util.map ؛ الفئة العامة httprequest { /** * أرسل طلب الحصول على طريقة الحصول على عنوان URL * * url url * url لإرسال الطلب * param param * المعلمات طلب ، يجب أن تكون معلمات الطلب في شكل name1 & name2 = value2. * return url response نتيجة للموارد عن بُعد الممثلة في المورد عن بُعد*/ سلسلة ثابتة عامة sendget (url url string ، string param) {string result = "" ؛ BufferedReader في = فارغة ؛ حاول {String urlnamestring = url + "؟"؟ + param ؛ url realurl = url جديد (urlnamestring) ؛ // افتح الاتصال بين اتصال urlconnection url = realurl.openconnection () ؛ // قم بتعيين Connection.SetRequestProperty ("قبول" ، "*/*") ؛ connection.setRequestProperty ("connection" ، "keep-alive") ؛ connection.setRequestProperty ("Assion-Agent" ، "Mozilla/4.0 (متوافق ؛ MSIE 6.0 ؛ Windows NT 5.1 ؛ SV1)") ؛ // إنشاء اتصال فعلي connection.connect () ؛ // احصل على جميع حقول رأس الاستجابة <string ، قائمة <Tring>> map = connection.getheaderfields () ؛ . }. خط السلسلة بينما ((line = in.readline ())! = null) {result += line ؛ }} catch (استثناء e) {system.out.println ("حدث استثناء عند إرسال طلب الحصول على!" + e) ؛ E.PrintStackTrace () ؛ } // استخدم أخيرًا كتلة لإغلاق دفق الإدخال أخيرًا {try {if (in! = null) {in.close () ؛ }} catch (استثناء e2) {e2.printStackTrace () ؛ }} نتيجة الإرجاع ؛ } /** * أرسل طلبًا إلى url المحدد * url url * url لإرسال طلب * param param * المعلمة ، يجب أن تكون معلمة الطلب في نموذج name1 = value1 & name2 = value2. * return استجابة نتيجة المورد عن بُعد يمثله */ public static String SendPost (url url ، String param) {printWriter Out = null ؛ BufferedReader في = فارغة ؛ نتيجة السلسلة = "" ؛ حاول {url realurl = url new (url) ؛ // افتح الاتصال بين urlconnection conn = alwurl.openconnection () ؛ // قم بتعيين سمة الطلب العام conn.setRequestProperty ("قبول" ، "*/*") ؛ Conn.SetRequestProperty ("connection" ، "keep-alive") ؛ Conn.SetRequestProperty ("Asser-Agent" ، "Mozilla/4.0 (متوافق ؛ MSIE 6.0 ؛ Windows NT 5.1 ؛ SV1)") ؛ // لإرسال طلب منشور ، يجب عليك تعيين السطرين التاليين على conn.setDooutput (True) ؛ conn.setDoInput (صواب) ؛ // احصل على دفق الإخراج المقابل لكائن urlConnection Out = new printWriter (conn.getOutputStream ()) ؛ // إرسال المعلمة request Out.print (param) ؛ // buffer out.flush () من دفق الإخراج Flush ؛ . خط السلسلة بينما ((line = in.readline ())! = null) {result += line ؛ }} catch (استثناء e) {system.out.println ("حدث استثناء عند إرسال طلب البريد!" +e) ؛ E.PrintStackTrace () ؛ } // استخدم الكتل أخيرًا لإغلاق دفق الإخراج ودفق الإدخال أخيرًا {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 catch catch e.printstacktrace () ؛ } نتيجة الإرجاع ؛ }}2. العروض التجريبية الرسمية httpclient رمز طلب
// import java.io.fileInputStream ؛ // import java.io.filenotfoundException ؛ import java.ioexception ؛ import org.apache.commons.httpclient.httpclient ؛ import org.apache.commons.httpclient.httpexception ؛ org.apache.commons.httpclient.namevaluepair ؛ import org.apache.commons.httpclient.methods.postmethod ؛ import org.dom4j.document ؛ import org.dom4j.documentException ؛ import org.dom4j.documenthelper ؛ استيراد org.dom4j.element ؛ الفئة العامة sendsms {private Static String url = "http://121.199.؟.178/webservice/sms.php؟method=Submit" ؛ public static void main (string [] args) {httpclient client = new httpclient () ؛ طريقة postmethod = postmethod جديد (url) ؛ //client.getParams().setContentcharset("GBK ") ؛ client.getParams (). setContentCharset ("UTF-8") ؛ method.setRequestHeader ("contentType" ، "Application/X-WWW-Form-urlencoded ؛ charset = utf-8") ؛ محتوى السلسلة = سلسلة جديدة ("رمز التحقق الخاص بك هو: 7528. يرجى عدم تسرب رمز التحقق للآخرين.") ؛ nameValuePair [] data = {// إرسال sms new NameValuePair ("الحساب" ، "اسم المستخدم") ، NEWALEVALUEPAIR ("كلمة المرور" ، "كلمة المرور") ، // يمكن تشفير كلمة المرور باستخدام كلمة المرور plasse أو 32-bit md5 // new nameValuepair ( NameValUepair ("Mobile" ، "Mobile Number") ، New NameValuePair ("Content" ، Content) ،} ؛ method.setRequestBody (البيانات) ؛ حاول {client.executemethod (method) ؛ String submitResult = method.getResponseBondAssTring () ؛ //system.out.println(SubmitResult) ؛ مستند المستند = documentHelper.ParSetext (sumpresult) ؛ العنصر جذر = doc.getRootElement () ؛ رمز السلسلة = root.elementText ("رمز") ؛ String msg = root.elementText ("msg") ؛ سلسلة smsid = root.elementText ("smsid") ؛ System.out.println (Code) ؛ system.out.println (msg) ؛ system.out.println (smsid) ؛ if (code == "2") {system.out.println ("SMS Sridming Success") ؛ }} catch (httpexception e) {// todo catch block e.printstacktrace () ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ } catch (documentException e) {// todo catch block e.printstacktrace () ؛ }} 0 3. اتصل برمز httprequest المغلف
سلسلة phonemessageParameter = سلسلة جديدة ("حساب =؟ & password = wxhdcs@456 & content = رمز التحقق الخاص بك هو: [متغير]. من فضلك لا تسرب رمز التحقق للآخرين. ReturnResult = httprequest.sendpost ("http://121.؟.16.178/webservice/sms.php؟method=Submit" ، phonemessageParameter) ؛ Out.println ("<script> ALERT ("+returnresult+") ؛ </script>") ؛إذا كنت تستخدم هذا النظام الأساسي ، فيجب عليك الانتباه إليه. اسم المعلمة في مستندها الرسمي خاطئ ، والعروض العرضية صحيحة ، وواجهته مكتوبة في خادم الويب. لا يعيد بيانات JSON أو XML ، ولكن صفحة HTML قياسية ، ثم يتم كتابة جميع المحتويات المطلوبة في العلامات في HTML. إذا كان محتوى اختبار محتوى ، فيجب كتابة المعلمة كما هو محدد ، وإلا سيتم الإبلاغ عن خطأ. إذا قمت بشرائها رسميًا ، فيمكنك تعيين محتوى القالب بنفسك.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.