Эта глава является первой частью отправки текстовых сообщений. Давайте поговорим о коде для отправки текстовых сообщений синхронно/асинхронно. В следующих нескольких статьях мы немного улучшим функции и добавим предел на частоту отправки и ежедневную отправку.
Там может быть много способов отправить текстовые сообщения. Наш метод состоит в том, чтобы использовать услуги, предоставляемые поставщиком услуг. Вообще говоря, эти услуги не содержат языка. Здесь мы используем Java для написания образцов программ.
1. Интерфейс для отправки текстовых сообщений <br /> Выберите поставщика услуг в соответствии с вашей собственной ситуацией.
2. Документ разработки <br /> мы можем увидеть из документа разработки. Вы можете использовать HTTP -запросы напрямую или запросы веб -сервиса для отправки текстовых сообщений. Поскольку код в папках Java и JSP в папке Demo, используйте HTTP -запросы для отправки текстовых сообщений. Так что я не буду вдаваться в подробности здесь. Мы используем веб -сервис, чтобы продемонстрировать отправку текстовых сообщений.
3. Сгенерировать клиент -код
Из интерфейсного документа мы знаем, что URL его веб -сервиса WSDL: http://106.ihuyi.cn/webservice/sms.php?wsdl, тогда мы можем выполнить следующую команду для создания клиентского кода:
wsimport -keep http://106.ihuyi.cn/webservice/sms.php?wsdl
Среди них WSIMPORT -это инструмент, который поставляется с JDK, а опция URL -контроля -«сохранить сгенерированные файлы». Эта команда будет генерировать пакеты SMS.cn.ihuyi._106 в текущем каталоге, а также многие классы. Далее начните писать наш собственный код.
4. Определите интерфейс
Для удобства, здесь мы сначала определяем интерфейс:
Sms.java
Public Interface SMS { / ** * Отправить SMS для мобильных устройств, Content -это сообщение * * @param Номер мобильного телефона * @param SMS SMS * @return успешно возвращает -1, в противном случае возвращает другое значение * / int sendmessage (строка мобильное, строковое сообщение);}Этот интерфейс очень прост, есть только один метод. Этот метод используется для отправки текстовых сообщений.
5. Отправить текстовые сообщения одновременно
Далее мы сначала реализуем класс, который посылает SMS -синхронно:
IhuyismSimpl.java
открытый класс ihuyismSimpl реализует SMS {Private String Account; Private String Password; public void setAccount (string account) {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.getSMSOAP (); Отправить Result Opport = SmsSOAP.Submit (учетная запись, пароль, мобильный, сообщение); int code = Opport.getCode (); if (code == 2) {return -1; } System.out.println ("Отправить SMS -удаление, код:" + code); код возврата; }}В строке 17 мы получаем прокси -объект удаленного объекта. Затем мы можем отправлять SMS, запросить баланс счета и другие операции через этот прокси -объект.
В строке 18 содержимое SMS отправляется с использованием метода отправки объекта прокси. Информация о параметрах и значение возврата значения метода подробно объясняются в интерфейсном документе.
В строке 19 мы получаем код состояния результата. Согласно инструкциям в документе, код состояния составляет 2, указывая на то, что представление успешно. Для простоты мы сосредоточены только на ситуации, когда представление успешно. Следует отметить, что код состояния составляет 2, только указывая на то, что представление успешно. Согласно официальному веб-сайту «Ответ в течение 3-5 секунд, на 100% прибытие» на официальном веб-сайте, мы можем сделать вывод. Если представление будет успешным, в основном SMS будет успешно отправлено в течение 3-5 секунд. Согласно ситуации с сетью пользователя, пользователь может получить SMS с небольшой задержкой.
Также очень просто использовать этот код для отправки текстовых сообщений. Вы можете непосредственно новый объект, установить свою учетную запись и пароль и отправлять текстовые сообщения.
6. Отправить текстовые сообщения асинхронно
Поскольку отправка SMS включает в себя сетевую связь, метод SendMessage может иметь некоторую задержку. Чтобы улучшить пользовательский опыт, мы можем использовать метод отправки SMS -асинхронно. Принцип очень прост: если пользователь просит отправлять SMS, вместо того, чтобы напрямую вызывать метод SendMessage IhuyismSimpl, мы сохраняем запрос (производитель), а затем сообщаем пользователю: SMS отправляется успешно. После этого несколько потребителей берут задачу и вызывают метод Sendmessage для отправки SMS.
Здесь я использую пул потоков для выполнения вышеуказанной задачи:
Asyncsmsimpl.java
открытый класс 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 {receeporservice.submit (() -> sendsms.sendmessage (mobile, message)); } catch (Exception e) {sysemt.out.println ("Произошла ошибка при отправке задачи" + e); возврат 0; } return -1; } public void destry () {try {executorService.shutdown (); } catch (Exception e) {}}}Код очень прост. Вы можете напрямую добавить метод SendMessage (Mobile, Message) интерфейса SMS в очередь задачи пула потоков в качестве задачи. Таким образом, когда есть бесплатные потоки, Sendsms.sendmessage (Mobile, Message) будут выполнены для отправки SMS. Здесь мы предполагаем, что до тех пор, пока он сохраняется в пуле потоков, вы можете успешно отправлять SMS. Потому что отправка сбоя на самом деле редко.
Отправить текстовые сообщения синхронно/асинхронно завершено. В следующих нескольких статьях мы рассмотрим некоторые общие ограничения, такие как: вы можете отправлять только раз в минуту, вы можете отправлять только 5 раз в день и т. Д.
Я надеюсь, что всем понравится эта статья.