Дополнительно
Как отправить SMS в Java
Каковы возможные способы отправки и получения sms из Java-приложения?
Как?
124
15
Каковы возможные способы отправки и получения sms из Java-приложения?
Как?
(Отказ от ответственности: я работаю в компании Twilio).
Twilio предлагает Java SDK для отправки SMS через Twilio REST API.
Если вам нужны только простые уведомления, многие операторы поддерживают передачу SMS по электронной почте; см. раздел SMS через электронную почту
Существует API под названием SMSLib, он действительно замечательный. http://smslib.org/
EDIT:
Теперь у вас есть множество Saas-провайдеров, которые могут предоставить вам эту услугу, используя свои API.
Например: mailchimp, esendex, Twilio, ...
Лучшие SMS API, я'вэ видел в Java JSMPP. Это мощный, легкий в использовании, и я использовал его сам для приложений на уровне предприятия (отправка за 20К SMS-сообщений ежедневно).
Я'пробовала некоторые другие API, таких как озэки, но большинство из них либо коммерческих или имеет ограничения в пропускной способности (я.E может'т отправить более 3 SMS-сообщений в секунду, например).
Вы можете использовать Nexmo на Отправить SMS а также получать SMS](https://www.nexmo.com/blog/2017/05/31/receive-sms-messages-java-dr/).
Отправка SMS с Java-библиотека Nexmo достаточно проста. После создания новой учетной записи](https://dashboard.nexmo.com/sign-up), аренда виртуальный номер, и получаете ваш ключ &амп по API; секрет вы можете использовать библиотеку для отправки SMS вот так:
Для получения SMS вы'll необходимо, чтобы установить сервер, который использует веб-перехватчик. Что'ы довольно простой. Я рекомендую проверить наш учебник по получение SMS с Java.
Раскрытие: я работаю на Nexmo
Вы можете сделать это с помощью GSM-модема и Java API связи [проверенные]
импорт Java.Ио.; импорт Java.утиль.;
импорт гну.Ио.*;
импорт Java.Ио.*;
импорт орг."Апач".к log4j.бензопила.Главная;
импорт солнце.аудио.*;
публичных GSMConnect реализует SerialPortEventListener класс, CommPortOwnershipListener {
частная статическую строку Вести = "и СОМ6 и"; // Этот COM-порт нужно подключить с GSM-модемом или мобильным телефоном частная строку messageString = назальный;; частная CommPortIdentifier portid которого имеет значение = нуль; частная перечисления portList; частная клиента InputStream InputStream в = нуль; частная перенаправляет клиенту OutputStream = нуль; частная последовательный порт последовательный порт; Строки readBufferTrial = " по себе"; /* Создает новый экземпляр GSMConnect / общественные GSMConnect(строковое сообщение) {
это.вести = комми;
}
общественного логический метод init() { portList = CommPortIdentifier.getPortIdentifiers(); пока (portList.hasMoreElements()) { portid которого имеет значение = (CommPortIdentifier) portList.nextElement(); если (portid которого имеет значение.getPortType() == CommPortIdentifier.PORT_SERIAL) { если (portid которого имеет значение.метод getname().равна(согласуются)) { Системы.из.код println("и получил Имя_порта-то"); возвратите True; } } } возвращает false; }
общественного недействительными метода checkstatus() { отправить("и на+Крег?\я р\н&;); }
общественного недействительными отправить(строку и Cmd) { попробовать { клиенту OutputStream.писать(УМК.метод getbytes()); } поймать (исключение IOException е) { е.печатные(); } }
общественного недействительными метод SendMessage(строка, номер телефона, строку сообщения) { голец цитаты =' и"'; отправить (на"в+CMGS=на"+цитаты + номер телефона +цитаты+ " в\р\н" - а); попробовать { Нить.сон(2000); } поймать (выдачей InterruptedException е) { // Todo автоматически сгенерирован блок catch е.печатные(); } // отправить("и на quot CMGS+=\&; на"+ Номер телефона +" и\" в\р\н" - а); послать(сообщение + '\032'); Системы.из.код println (и"сообщение отправлено" - а); }
общественного недействительными зависания() { отправить (на"Ат\р\н" - а); }
общественного недействительными подключения() бросает исключение NullPointerException { если (portid которого имеет значение != значение null) { попробовать { portid которого имеет значение.addPortOwnershipListener(это);
последовательный порт = (последовательный порт) portid которого имеет значение.открыть (на"MobileGateWay и", 2000); serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); } поймать (PortInUseException | UnsupportedCommOperationException е) { е.печатные(); }
попробовать { InputStream в = последовательный порт.getInputStream(); клиенту OutputStream = последовательный порт.getOutputStream();
} поймать (исключение IOException е) { е.печатные(); }
попробовать { /* Это события, мы хотим знать о/ последовательный порт.метод addEventListener(это); последовательный порт.notifyOnDataAvailable(истина); последовательный порт.notifyOnRingIndicator(истина); } поймать (TooManyListenersException е) { е.печатные(); }
//Зарегистрировать в домашней сети SIM-карты
отправить (на"АТЗ\р\н" - а);
} еще { бросить новое исключение NullPointerException("и COM-порт не найден!!&и"); } }
общественного недействительными serialEvent(serialPortEvent SerialPortEvent) { переключатель (serialPortEvent.метод geteventtype()) { дело SerialPortEvent.Би: дело SerialPortEvent.ОЭ: дело SerialPortEvent.Фе: дело SerialPortEvent.ЧП: дело SerialPortEvent.Компакт-диск: дело SerialPortEvent.ТТ: дело SerialPortEvent.ДСР: дело SerialPortEvent.РИ: дело SerialPortEvent.OUTPUT_BUFFER_EMPTY: дело SerialPortEvent.DATA_AVAILABLE:
байт[] readBuffer = новый байт[2048]; попробовать { пока (класса InputStream.в наличии () и gt; 0) { тип int numBytes = ридера.читать(readBuffer);
Системы.из.печати(numBytes); если((readBuffer.метод toString()).содержит (на"Кольцо", у)){ Системы.из.код println("и введите внутрь, если кольцо, петлю" - а);
} }
Системы.из.печать(новую строку(readBuffer)); } поймать (исключение IOException е) { } перерыв; } } outCommand общественного недействительными(){ Системы.из.печати(readBufferTrial); } общественного недействительными ownershipChange(тип int) { выключатель (тип) { дело CommPortOwnershipListener.PORT_UNOWNED: Системы.из.метод println(portid которого имеет значение.метод getname() + " и: PORT_UNOWNED" - а); перерыв; дело CommPortOwnershipListener.PORT_OWNED: Системы.из.метод println(portid которого имеет значение.метод getname() + " и: PORT_OWNED" - а); перерыв; дело CommPortOwnershipListener.PORT_OWNERSHIP_REQUESTED: Системы.из.метод println(portid которого имеет значение.метод getname() + " и: PORT_INUSED" - а); перерыв; }
} общественного недействительными closePort(){
последовательный порт.закрыть(); }
общественная статический недействительным основные(string аргументы[]) { GSMConnect ПГС = новый GSMConnect(вести); если (стандарта GSM.метод init()) { попробовать { Системы.из.метод println (на"Успех инициализации и"); стандарта GSM.подключиться(); Нить.сон(5000); стандарта GSM.метода checkstatus(); Нить.сон(5000);
стандарта GSM.метод SendMessage(" в+91XXXXXXXX и", "в суде успеха");
Нить.спать(1000);
стандарта GSM.отбой(); Нить.спать(1000); стандарта GSM.closePort(); стандарта GSM.outCommand(); Системы.выход(1);
} поймать (исключение e) { е.печатные(); } } еще { Системы.из.метод println("могут'т инициализации это карты и"); } }
}
Вы можете ЛОГИЧА ПМПП Ява API для отправки и получения SMS в Java-приложения. ЛОГИЧА ПМПП хорошо зарекомендовала себя API в приложение телеком. Логическая API также предоставить вам с сигнализации штарки capicity на TCP/IP соединение.
Вы сможете напрямую интегрировать с различными оператора связи accross мира.
Есть два способа : Первый : использовать SMS шлюз API, который вы должны заплатить за это , может быть, вы найдете некоторые суда даже бесплатные, но это's не хватает . Второй : использовать в команде с GSM модем, подключенный к ноутбуку . что's все
Это зависит от того, как вы'вновь ходить на работу и кто ваш провайдер.
Если вы работаете с SMS-шлюз компании вы'будете, вероятно, работать через протокол SMPP (3.4-прежнему является наиболее распространенным), то обратите внимание на OpenSMPP и jSMPP. Эти мощные библиотеки для работы с ПМПП.
Если вы'ре собирается работать на вашем оборудовании (Ф.е. GSM-модема) самый простой способ для отправки сообщений посредством AT-команд, они отличаются в зависимости от модели, так, вы должны выяснить, что за команды поддерживается вашим модемом. Далее, Если ваш модем имеет IP и открыты для связи, вы можете посылать команды через Java сокет
В противном случае вы'будете работать через COM-порт, но метод тот же (отправка AT-команд), вы можете найти более подробную информацию как работать с последовательными портами здесь.
Я предлагаю облачное решение, как в Twilio. Решения на основе облачных вычислений являются экономически эффективным, чем решение, так как нет постоянного технического обслуживания, необходимые. SMS через электронную почту-это не элегантное решение, как вы должны получить носитель информации от пользователя, и вы никогда не можете быть уверены, что вы можете все мобильные номера. Я с использованием Twilio API-интерфейса Java в моем веб-приложение, чтобы отправить SMS с серверной стороны. в течение нескольких минут, вы можете интегрировать с вашим приложением.
https://www.twilio.com/docs/java/install
Здесь'ы пример отправки SMS сообщения из документов:
ОМК.пмпп. API-интерфейс. это'с базы на СМПП и симулятор тоже можно бесплатно
ЛОГИЧЕСКАЯ ПРОТОКОЛУ SMPP API-ИНТЕРФЕЙС.
И другой вариант Зап бесплатный WAP и SMS шлюз.
TextMarks дает вам доступ к его общий короткий номер, чтобы отправлять и получать текстовые сообщения с вашего приложения через их API. Сообщения поступают от/до 41411 (вместо, например, случайный телефона# и в отличие от e-mail шлюзы, вы имеете полное 160 символов для работы с).
Вы также можете сказать людям, чтобы текст вашего сайта(ов) 41411 для вызова различных функций в вашем приложении. Есть клиент на Java API вместе с несколькими другими популярными языками и очень подробную документацию и техническую поддержку.
14 дневную бесплатную пробную версию может быть легко расширена для разработчиков, которые до сих пор тестирования, и строить свои приложения.
Посмотрите здесь: TextMarks по API информация
smslib является очень полезным для этой цели можно подключить модем к вашему ПК и использовать этот Либ для отправки SMS . Это работает, я использовал его
Мы тоже любим Java в Wavecell, но на этот вопрос можно ответить без языка-конкретные детали, поскольку у нас API-интерфейс REST, который будет охватывать большинство ваших потребностей:
Посмотрите на эти вопросы, если у вас есть проблемы с отправкой HTTP-запросов в Java:
Для особых случаев вы можете также рассмотреть возможность использования ПМПП АПИ и уже упомянутые [JSMPP] библиотека4 поможет с этим.
Вы можете использовать at & команды для отправки SMS через GSM-модем.