في مشروع صغير قمت به منذ بعض الوقت ، تضمنت تسجيل الدخول والتسجيل مع رموز التحقق من الرسائل القصيرة. لم أغطي هذا من قبل. في الواقع لم أفهم ذلك بعد قراءة مدونات الآخرين. الآن سأكتب وظيفة استخدام منصة الرسائل القصيرة من الطرف الثالث لإرسال رموز التحقق.
مع أخذ التسجيل كمثال ، تكمل هذه المقالة وظيفة رمز التحقق من الرسائل القصيرة استنادًا إلى إطار عمل SpringMVC+Spring+MyBatis.
مبدأ إرسال رمز التحقق من الرسائل القصيرة هو: توليد رقم عشوائي مكون من 6 أرقام ، وحفظ الرقم المكون من 6 أرقام في الجلسة ، ويحكم العميل على الجلسة المقابلة من خلال SessionId ، ويقارن رمز التحقق الذي أدخله المستخدم برمز التحقق الذي سجلته الجلسة.
من أجل منع أي إعلانات من الاشتباه ، لن أتحدث عن منصة الرسائل القصيرة.
بشكل عام ، سيكون للمنصات الرسمية للرسائل القصيرة من الجهات الخارجية واجهة الرسائل القصيرة الخاصة بها. طالما أنك تفهم الواجهة وإجراء تغيير بسيط ، يمكنك تلبية احتياجاتك.
أولاً ، قم بإدراج رمز واجهة منصة الرسائل القصيرة: هنا نحتاج إلى تنزيل ثلاث حزم من المشاع--1.1.1.jar ، commons-httpclient-3.1.jar ، commons-codec-1.4.jar
استيراد java.io.unsupportedencodingexception ؛ استيراد org.apache.commons.httpclient.header ؛ استيراد org.apache.commons.httpclient.httpclient ؛ استيراد org.apache.commons.httpclient.namevalupair ؛ استيراد org.apache.commons.httpclient.methods.postmethod ؛ الفئة العامة sendmsg_webchinese {public static void main (string [] args) يرمي استثناء {httpclient client = new httpclient () ؛ postmethod post = new Postmethod ( . // تعيين transcoding namevaluepair [] data = {new nameValuePair ("uid" ، "اسم المستخدم لهذا الموقع") ، nealmevaluepair ("مفتاح" ، "مفتاح أمان الواجهة") ، New NameValuePair ("smsmob" ، "رقم الهاتف المحمول") 8888 ")} ؛ post.setRequestBody (data) ؛ client.executemethod (post) ؛ header [] headers = post.getResponseHeaders () ؛ int statusCode = post.getStatusCode () ؛ system.out.println (" stationCode: الرؤوس) {system.out.println (H.ToString ()) ؛} string result = new string (post.getResponsebodyassTring (). getBytes ("gbk")) ؛ System.out.println (نتيجة) ؛ // طباعة حالة رسالة الإرجاع post.releaseconnection () ؛}}ليس من الصعب أن نرى أن المعلومات التي نريد إرسالها هي في هذا السطر من الكود: NameValUepair [] data = {new nameValuePair ("uid" ، "site site username") ، new namevaluepair ("key" ، "interface security key") ، new namevaluepair ("smsmob" ، "phone mobile) ،" 8888 ")} ؛
هناك أيضًا رسالة نتيجة في هذه الواجهة ، والتي يتم استخدامها لإخبار المستخدم بحالة إرسال الرسائل القصيرة. 1 يعني أن الإرسال ناجح ، والبعض الآخر أقل من 0 فشل. هنا ، فقط اعلم أن 1 ناجح.
في عملياتنا الفعلية ، يجب إنشاء رمز التحقق من قبلنا. احصل على معلومات النتيجة مع رمز التحقق ، لذلك من السهل التفكير في استخدام مجموعة HashMap. فيما يلي التغييرات في الواجهة بناءً على متطلبات المشروع:
استيراد java.util.hashmap ؛ استيراد org.apache.commons.httpclient.header ؛ استيراد org.apache.commons.httpclient.httpclient ؛ import org.apache.commons.httpclient.namevaluepair ؛ import org.commons.htttpclient.hodclient.namevaluepair ؛ com.yuetile.utils.VerifyCodeGenerator ؛ public sendmsg_webChinesEconTroller {public static hashmap <string ، string> getMessagEstatus (string phone) rems stise {new HTTPClient <string> m = new hashmap <string> () ؛ postmethod ("http://gbk.sms.webchinese.cn") ؛ post.addrequestheader ("نوع المحتوى" ، "التطبيق/x-www-form-urlencoded ؛ charset = gbk") ؛ // قم بتعيين الترميز في رمز سلسلة ملفات الرأس = VerificeCodeGenerator.generate () ؛ NameValuepair ("Key" ، "******") ، New NameValuePair ("SMSMOB" ، الهاتف) ، New NameValuepair ("smstext" ، "أنت تسجل عضوًا في هذا الموقع ، رمز التحقق هذا هو:"+رمز+"+" Valuetime هو 5 دقائق ")}) الكود) ؛ post.setRequestbody (data) ؛ client.executemethod (post) ؛ header [] headers = post.getResponseHeaders () ؛ int statusCode = post.getStatusCode () ؛ system.out.println ("statusCode:"+statusCode) ؛ for (header h: ideer) String (post.getResponseBodyAssTring (). getBytes ("GBK")) ؛ System.out.println (نتيجة) ؛ // طباعة حالة رسالة الإرجاع m.put ("النتيجة" ، النتيجة) ؛ post.releaseconnection () ؛ إرجاع M ؛}}*** تعني كلمة مرور الحساب المسجلة على منصة طرف ثالث.
طبقة العمل:
/. {string message = "send parch" ؛ string phone = u.getTelePhone () ؛ // احصل على رقم الهاتف المحمول الذي يتم إرساله بواسطة مستخدم userbean العميل = userservice.getByPhone (الهاتف) ؛ if (user! = null) {message = "تم تسجيل رقم الهاتف المحمول" ؛ إرجاع استجابة جديدة (الحالة. // application sms interface string result = m.get ("result") ؛ // احصل على نتيجة إذا (result.trim (). يساوي ("1")) {// إذا كان 1 ، فهذا يعني أنه يتم إرسال رمز السلسلة بنجاح. // احصل على محتوى رمز التحقق المرسل logger.info ("رمز التحقق المرسل:"+رمز) ؛ // طباعة جلسة السجل httpsession = request.getSession () ؛ // set SessionSsion.setAttribute ("Code" ، Code) ؛ // ضع رمز التحقق من الرسائل القصيرة في الجلسة لحفظ session.setMaxInaCtiveInterval (60 * 5) ؛ . إرجاع استجابة جديدة (status.error ، رسالة) ؛}}}بهذه الطريقة ، سيكون إرسال ناجح.
امتحان:
اختبار محليًا باستخدام Postman:
نتيجة:
أرسل بنجاح هنا.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة في دراسة أو عمل الجميع. آمل أيضًا دعم wulin.com أكثر!