この章は、テキストメッセージの送信の最初の部分です。テキストメッセージを同期/非同期に送信するためのコードについて話しましょう。次のいくつかの記事では、機能をわずかに改善し、送信頻度と毎日の送信時間に制限を追加します。
テキストメッセージを送信するには多くの方法があるかもしれません。私たちの方法は、サービスプロバイダーが提供するサービスを使用することです。一般的に言えば、これらのサービスは言語なしです。ここでは、Javaを使用してサンプルプログラムを作成します。
1。テキストメッセージを送信するためのインターフェイス<br />あなた自身の状況に応じてサービスプロバイダーを選択します。
2。開発文書<br />開発ドキュメントから見ることができます。 HTTP要求を直接使用するか、Webサービスリクエストを使用してテキストメッセージを送信できます。 DEMOフォルダーのJavaおよびJSPフォルダーのコードは、HTTP要求を使用してテキストメッセージを送信するためです。だから私はここで詳しく説明しません。 WebServiceを使用して、テキストメッセージの送信を実証します。
3.クライアントコードを生成します
インターフェイスドキュメントから、WebService WSDLのURLは次のことを知っています:http://106.ihuyi.cn/webservice/sms.php?wsdlによると、次のコマンドを実行してクライアントコードを生成できます。
wsimport -keep http://106.ihuyi.cn/webservice/sms.php?wsdl
その中でも、WSimportはJDKに付属するツールであり、-Keep URLオプションは「生成されたファイルを保持する」です。このコマンドは、現在のディレクトリと多くのクラスにsms.cn.ihuyi._106パッケージを生成します。次に、独自のコードの作成を開始します。
4。インターフェイスを定義します
便利なため、ここでは最初にインターフェイスを定義します。
sms.java
パブリックインターフェイスSMS { / ** * SMSをモバイルに送信します。コンテンツはメッセージ * * @Param Message SMSコンテンツ * @returnを正常に返します。このインターフェイスは非常にシンプルで、1つの方法しかありません。この方法は、テキストメッセージの送信に使用されます。
5.テキストメッセージを同時に送信します
次に、最初にSMSを同期して送信するクラスを実装します。
ihuyismsimpl.java
パブリッククラスihuyismsimplはSMS {private Stringアカウント;プライベート文字列パスワード。 public void setAccount(stringアカウント){this.account = account; } public void setPassword(string password){this.password = password; } @Override public int sendMessage(string mobile、string message){cn.ihuyi._106.sms factory = new cn.ihuyi._106.sms(); smssoap smssoap = factory.getsmssoap(); submitresult submit = smssoap.submit(アカウント、パスワード、モバイル、メッセージ); int code = submit.getCode(); if(code == 2){return -1; } system.out.println( "sms failed、code:" + code);返品コード。 }}17行目で、リモートオブジェクトのプロキシオブジェクトを取得します。その後、SMSを送信し、このプロキシオブジェクトを介してアカウント残高とその他の操作を照会できます。
18行目では、SMSコンテンツはプロキシオブジェクトの送信方法を使用して送信されます。メソッドのパラメーター情報と返品値の意味は、インターフェイスドキュメントで詳細に説明されています。
19行目で、結果のステータスコードを取得します。ドキュメントの指示によると、ステータスコードは2であり、提出が成功したことを示しています。簡単にするために、提出が成功する状況にのみ焦点を当てます。ステータスコードは2であり、提出が成功したことを示すだけであることに注意する必要があります。公式ウェブサイトの公式ウェブサイト「3〜5秒以内の応答」によると、公式ウェブサイトの公式ウェブサイトでは、推測できます。提出が成功した場合、基本的にSMSは3〜5秒以内に正常に送信されます。ユーザーのネットワークの状況によると、ユーザーはわずかな遅延でSMSを受信する場合があります。
また、このコードを使用してテキストメッセージを送信することも非常に簡単です。オブジェクトを直接新規にし、アカウントとパスワードを設定し、テキストメッセージを送信できます。
6.テキストメッセージを非同期に送信します
SMSの送信にはネットワーク通信が含まれるため、SendMessageメソッドにはある程度の遅延がある場合があります。ユーザーエクスペリエンスを改善するために、SMSを非同期に送信する方法を使用できます。原則は非常に単純です。ユーザーがSMSを送信することを要求する場合、IHUYISMSIMPLのSendMessageメソッドを直接呼び出す代わりに、リクエスト(プロデューサー)を保存し、ユーザーにSMSを正常に送信します。その後、数人の消費者がタスクを取り出し、SENDMESSAGEメソッドを呼び出してSMSを送信します。
ここでは、スレッドプールを使用して上記のタスクを完了します。
asyncsmsimpl.java
Public Class AsyncsmsimplはSMS {public sms sendsms; private executorservice executorservice = executors.newfixedthreadpool(3); public void setsendsms(sms sendsms){this.sendsms = sendsms; } @Override public int sendMessage(string mobile、string message){try {executorservice.submit(() - > sendsms.sendmessage(mobile、message)); } catch(例外e){sysemt.out.println( "タスクの送信中にエラーが発生した" + e); 0を返します。 } return -1; } public void destroy(){try {executorservice.shutdown(); } catch(例外e){}}}コードは非常に簡単です。 SMSインターフェイスのsendMessage(モバイル、メッセージ)メソッドをタスクとしてスレッドプールのタスクキューに直接追加できます。このようにして、自由なスレッドがある場合、sendsms.sendmessage(モバイル、メッセージ)が実行されてSMSが送信されます。ここでは、スレッドプールに保存されている限り、SMSを正常に送信できると仮定します。障害を送信することは実際にはまれだからです。
テキストメッセージを同期/非同期に送信します。次のいくつかの記事では、次のような一般的な制限を見てみましょう。1分に1回しか送信できず、1日に5回しか送信できません。
誰もがこの記事が好きだといいのですが。