هذا الفصل هو الجزء الأول من إرسال الرسائل النصية. دعنا نتحدث عن الرمز لإرسال الرسائل النصية بشكل متزامن/غير متزامن. في المقالات القليلة التالية ، سنقوم بتحسين الوظائف قليلاً ونضيف الحد الأقصى على تردد الإرسال وأوقات الإرسال اليومية.
قد يكون هناك العديد من الطرق لإرسال الرسائل النصية. طريقتنا هي استخدام الخدمات التي يقدمها مزود الخدمة. بشكل عام ، هذه الخدمات خالية من اللغة. هنا نستخدم Java لكتابة نماذج برامج.
1. واجهة إرسال الرسائل النصية <BR /> حدد موفر خدمة وفقًا لموقفك الخاص.
2. وثيقة التطوير <br /> يمكننا أن نرى من وثيقة التطوير. يمكنك استخدام طلبات HTTP مباشرة أو طلبات خدمة الويب لإرسال رسائل نصية. نظرًا لأن الرمز الموجود في مجلدات Java و JSP في المجلد التجريبي ، استخدم طلبات HTTP لإرسال رسائل نصية. لذلك لن أخوض في التفاصيل هنا. نحن نستخدم خدمة WebS لإظهار الرسائل النصية المرسلة.
3. إنشاء رمز العميل
من مستند الواجهة ، نعلم أن عنوان URL الخاص بـ WebService WSDL هو: http://106.ihuyi.cn/webservice/sms.php؟wsdl ثم يمكننا تنفيذ الأمر التالي لإنشاء رمز العميل:
WSIMPORT -KEY http://106.ihuyi.cn/webservice/sms.php؟wsdl
من بينها ، Wsimport هي أداة تأتي مع JDK ، وخيار URL للحفظ هو "الحفاظ على الملفات التي تم إنشاؤها". سيقوم هذا الأمر بإنشاء SMS.CN.IHUYI._106 في الدليل الحالي ، وكذلك العديد من الفئات. بعد ذلك ، ابدأ في كتابة الكود الخاص بنا.
4. تحديد الواجهة
للراحة ، هنا نحدد الواجهة أولاً:
SMS.JAVA
الواجهة العامة sms { / ** * إرسال رسالة نصية قصيرة إلى الهاتف المحمول ، المحتوى هو رسالة * * param رقم الهاتف المحمول * param message content * return إرجاع -1 بنجاح ، وإلا بإرجاع قيمة أخرى * / int sendMessage (سلسلة mobile ، string message) ؛}هذه الواجهة بسيطة للغاية ، هناك طريقة واحدة فقط. يتم استخدام هذه الطريقة لإرسال الرسائل النصية.
5. إرسال الرسائل النصية في وقت واحد
بعد ذلك ، ننفذ أولاً فصلًا يرسل SMS بشكل متزامن:
ihuyismsimpl.java
الطبقة العامة ihuyismsimpl تنفذ sms {private string account ؛ كلمة مرور السلسلة الخاصة ؛ public void setAccount (string account) {this.account = account ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } Override public int sendMessage (سلسلة mobile ، رسالة سلسلة) {cn.ihuyi._106.sms factory = new Cn.Ihuyi._106.sms () ؛ smssoap smssoap = factory.getSmsSoap () ؛ إرسال refctult = smssoap.submit (الحساب ، كلمة المرور ، الهاتف المحمول ، الرسالة) ؛ رمز int = submit.getCode () ؛ if (code == 2) {return -1 ؛ } system.out.println ("أرسل إرسال الرسائل القصيرة ، الكود:" + رمز) ؛ رمز الإرجاع ؛ }}في السطر 17 ، نحصل على كائن وكيل للكائن البعيد. ثم يمكننا إرسال الرسائل القصيرة ، والاستعلام عن رصيد الحساب والعمليات الأخرى من خلال هذا الكائن الوكيل.
في السطر 18 ، يتم إرسال محتوى الرسائل القصيرة باستخدام طريقة إرسال كائن الوكيل. يتم شرح معلومات المعلمة وقيمة الإرجاع المعنى للطريقة بالتفصيل في مستند الواجهة.
على السطر 19 ، نحصل على رمز الحالة للنتيجة. وفقًا للتعليمات الواردة في المستند ، فإن رمز الحالة هو 2 ، مما يشير إلى أن التقديم ناجح. من أجل البساطة ، نركز فقط على الموقف الذي ينجح فيه التقديم. تجدر الإشارة إلى أن رمز الحالة هو 2 ، مما يشير فقط إلى أن التقديم ناجح. وفقًا لموقع الويب الرسمي "الرد في غضون 3-5 ثوان ، وصول 100 ٪ على الموقع الرسمي ، يمكننا أن نستنتج. إذا نجح التقديم ، فسيتم إرسال الرسائل القصيرة بشكل أساسي بنجاح في غضون 3-5 ثوان. وفقًا لموقف شبكة المستخدم ، قد يتلقى المستخدم الرسائل القصيرة بتأخير طفيف.
من السهل جدًا استخدام هذا الرمز لإرسال رسائل نصية. يمكنك جديد مباشرة كائن ، وتعيين حسابك وكلمة المرور وإرسال الرسائل النصية.
6. إرسال الرسائل النصية بشكل غير متزامن
نظرًا لأن إرسال الرسائل القصيرة تتضمن اتصالًا بالشبكة ، فقد يكون لأسلوب SendMessage بعض التأخير. من أجل تحسين تجربة المستخدم ، يمكننا استخدام طريقة إرسال الرسائل القصيرة بشكل غير متزامن. المبدأ بسيط للغاية: إذا طلب المستخدم إرسال الرسائل القصيرة ، بدلاً من استدعاء طريقة SendMessage الخاصة بـ ihuyismsimpl ، فإننا نحفظ الطلب (المنتج) ، ثم أخبر المستخدم: يتم إرسال الرسائل القصيرة بنجاح. بعد ذلك ، يقوم العديد من المستهلكين بإخراج المهمة واتصلوا طريقة SendMessage لإرسال الرسائل القصيرة.
هنا ، أستخدم Pool Pool لإكمال المهمة أعلاه:
asyncsmsimpl.java
الطبقة العامة asyncsmsimpl تنفذ sms {sms public sendsms ؛ SecorrosorService ExecutorService = Executors.NewFixedThreadPool (3) ؛ setSendsms public void (sms sendsms) {this.sendsms = sendsms ؛ } Override public int sendMessage (سلسلة mobile ، رسالة سلسلة) {try {executorService.submit (() -> sendsms.sendmessage (mobile ، message)) ؛ } catch (استثناء e) {sysemt.out.println ("حدث خطأ أثناء إرسال المهمة" + e) ؛ العودة 0 ؛ } العودة -1 ؛ } public void destroy () {try {executorService.shutdown () ؛ } catch (استثناء e) {}}}الكود بسيط للغاية. يمكنك إضافة طريقة SendMessage (Mobile ، Message) مباشرةً لواجهة الرسائل القصيرة إلى قائمة انتظار المهمة لمجموعة مؤشرات الترابط كمهمة. وبهذه الطريقة ، عندما يكون هناك مؤشرات ترابط مجانية ، سيتم تنفيذ sendsms.SendMessage (الهاتف المحمول ، الرسالة) لإرسال الرسائل القصيرة. هنا نفترض أنه طالما تم حفظه في تجمع الخيوط ، يمكنك إرسال الرسائل القصيرة بنجاح. لأن إرسال الفشل أمر نادر بالفعل.
أرسل الرسائل النصية بشكل متزامن/بشكل غير متزامن. في المقالات القليلة التالية ، سوف نلقي نظرة على بعض القيود الشائعة ، مثل: يمكنك إرسال مرة واحدة فقط في دقيقة واحدة ، يمكنك إرسال 5 مرات في اليوم فقط ، وما إلى ذلك.
أتمنى أن يحب الجميع هذا المقال.