Jak wysłać SMS z Javy

Najprostszym sposobem wysłania SMS-a z Javy jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Kiedy używasz tego API, będziesz wysyłać wiadomości SMS poprzez wysłanie żądania HTTP Post do bramki SMS. Żądanie HTTP Post będzie zawierać wiadomość sformatowaną w formacie json. Bramka SMS wyśle tę wiadomość SMS na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na twoje żądanie.

jak wysłać sms z java
Rysunek 1 - Jak wysłać SMS z Javy

Kod Java do wysyłania SMS na telefon

Poniższy przykładowy kod Java do wysyłania SMS demonstruje, jak możesz wysyłać SMS-y używając interfejsu HTTP REST SMS API Ozeki SMS Gateway z biblioteką Java Ozeki.Libs.Rest. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym z twoich projektów.

Main.java
import Ozeki.Libs.Rest.*;

public class Main {

    public static void main(String[] args) {

        var configuration = new Configuration();
        configuration.Username = "http_user";
        configuration.Password = "qwe123";
        configuration.ApiURL = "http://127.0.0.1:9509/api";

        var msg = new Message();
        msg.ToAddress = "+36201111111";
        msg.Text = "Hello world";

        var api = new MessageApi(configuration);
        
        var result = api.Send(msg);
        
        System.out.println(result);
    }
}
	

Jak używać przykładu Java do wysyłania SMS:

Możesz użyć klasy Message do stworzenia SMS-a i możesz użyć klasy MessageApi, aby wysłać SMS do bramki SMS. Bramka SMS przekaże twoją wiadomość do sieci komórkowej albo przez połączenie bezprzewodowe albo przez Internet.

Pobierz SendSms.java

Kod źródłowy wyjaśniony w tym artykule może być pobrany, użyty i zmodyfikowany bezpłatnie.
Pobierz: SendSms.java.zip (89.3Kb)

Co znajduje się w pliku SendSms.java.zip?

Plik SendSms.java.zip zawiera bibliotekę Ozeki, która daje ci wszystkie narzędzia niezbędne do wysyłania i odbierania wiadomości SMS. Znajdziesz tam również plik Main.java w projekcie, który zawiera przykładowy kod pokazujący jak wysłać SMS. Ten przykładowy kod jest wymieniony poniżej.

katalog send sms java
Rysunek 2 - Katalog SendSms.java

Jak wysłać SMS z Javy (Szybkie kroki)

Aby wysłać SMS z Javy:

  1. Zainstaluj Ozeki SMS Gateway
  2. Podłącz Ozeki SMS Gateway do sieci komórkowej
  3. Wyślij testowy SMS z interfejsu Ozeki
  4. Utwórz użytkownika HTTP SMS API
  5. Zainstaluj Apache NetBeans
  6. Utwórz projekt o nazwie SendSms
  7. Umieść kod w nowo utworzonym pliku Main.java lub użyj pliku Main.java z .zip
  8. Utwórz SMS tworząc nowy obiekt Message
  9. Utwórz API do wysłania wiadomości
  10. Użyj metody Send do wysłania wiadomości
  11. Odczytaj odpowiedź na konsoli
  12. Sprawdź logi w bramce SMS

Zainstaluj Ozeki SMS Gateway i utwórz użytkownika HTTP API

Aby móc wysyłać SMS-y z Javy, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod Java w Apache NetBeans. Po instalacji, kolejnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz wysłać testowy SMS z interfejsu Ozeki, aby sprawdzić, czy twoje połączenie z siecią komórkową działa. Ostatnim krokiem przygotowania środowiska jest utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "http_user" i hasłem "qwe123", aby przykład działał bez modyfikacji.

Po skonfigurowaniu środowiska możesz uruchomić swój kod Java.

URL API HTTP do wysyłania SMS z Javy

Aby wysłać SMS z Javy, twoja aplikacja Java będzie musiała wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Zauważ, że adres IP (127.0.0.1) powinien zostać zastąpiony adresem IP twojej bramki SMS. Jeśli Ozeki SMS Gateway jest zainstalowany na tym samym komputerze, na którym działa aplikacja Java do wysyłania SMS, może to być 127.0.0.1. Jeśli jest zainstalowany na innym komputerze, powinien to być adres IP tego komputera.

http://127.0.0.1:9509/api?action=rest
	

Uwierzytelnianie HTTP do wysyłania SMS z Javy

Aby uwierzytelnić klienta Java do wysyłania SMS, musisz wysłać nazwę użytkownika i hasło w zakodowanym ciągu base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W Java możesz użyć następującego kodu do wykonania tego kodowania:

var usernamePassword = username + ":" + password;
var encodedUsernamePassword = usernamePassword.getBytes();
return "Basic " + Base64.getEncoder().encodeToString(encodedUsernamePassword);
	

Na przykład, jeśli zakodujesz nazwę użytkownika 'http_user' i hasło 'qwe123', otrzymasz następujący zakodowany ciąg base64: aHR0cF91c2VyOnF3ZTEyMw==. Aby wysłać

Nagłówek żądania HTTP do wysyłania SMS z Javy

Aby wysłać wiadomości SMS, musisz dołączyć następujące linie jako nagłówki w żądaniu HTTP. Zauważ, że dołączamy typ zawartości i nagłówek Authorization.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

Żądanie HTTP do wysłania SMS-a z Javy

Aby wysłać SMS, Twoja aplikacja Java wyśle żądanie HTTP podobne do poniższego. Zauważ, że to żądanie zawiera część nagłówka HTTP i część ciała HTTP. Ciało HTTP to ciąg danych zakodowany w formacie JSON. Zawiera numer odbiorcy i tekst wiadomości.

POST /api?action=sendmsg HTTP/1.1
HTTP2-Settings: AAEAAEAAAAIAAAABAAMAAABkAAQBAAAAAAUAAEAA
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
Content-Length: 319
Content-Type: application/json
Accept: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
User-Agent: Java-http-client/16.0.1
  
{
	"messages":	[
		{
			"message_id":"f5035474-77d7-4be0-9ace-14bf3105940e",
			"submit_report_requested":true,
			"view_report_requested":true,
			"valid_until":"2021-06-18 13:37:47",
			"time_to_send":"2021-06-11 13:37:47",
			"to_address":"+36201111111",
			"text":"Hello world",
			"create_date":"2021-06-11 13:37:47",
			"delivery_report_requested":true
		}
	]
}

	

Odpowiedź HTTP otrzymana przez przykład SMS w Javie

Gdy brama SMS otrzyma to żądanie, wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, wskazujący, czy żądanie wysłania SMS-a zakończyło się sukcesem. Zwróci również strukturę zakodowaną w formacie JSON, dostarczając przydatnych informacji o przesłaniu wiadomości.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.120 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 11 Jun 2021 13:37:11 GMT
Server: 10/10.3.120
Transfer-Encoding: chunked

{
"http_code": 200,
"response_code": "SUCCESS",
"response_msg": "Messages queued for delivery.",
"data": {
  "total_count": 1,
  "success_count": 1,
  "failed_count": 0,
  "messages": [
    {
      "message_id": "f5035474-77d7-4be0-9ace-14bf3105940e",
      "from_station": "%",
      "to_address": "+36201111111",
      "to_station": "%",
      "text": "Hello world",
      "create_date": "2021-06-11 13:37:47",
      "valid_until": "2021-06-18 13:37:47",
      "time_to_send": "2021-06-11 13:37:47",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": false,
      "tags": [
        {
          "name": "Type",
          "value": "SMS:TEXT"
        }
      ],
      "status": "SUCCESS"
    }
  ]
}
}
	

Jak wysłać SMS z Javy przy użyciu API SMS w Javie (Samouczek wideo)

Ten film pokazuje, jak utworzyć nowy projekt w Apache NetBeans, jak nazwać go SendSms. Po utworzeniu rozwiązania możesz zauważyć, że w projekcie w folderze Source Packages znajduje się folder o nazwie <default package>. To tutaj utworzysz lub wkleisz plik Main.java. Następnie musisz wkleić folder Ozeki do folderu Source Packages i to wszystkie przygotowania potrzebne do wysłania SMS-a przy użyciu Javy.

Wideo 1 - Jak wysłać SMS z Javy przy użyciu API SMS w Javie (Samouczek wideo)

Przykład SMS w Javie: Main.java

Rysunek 3 - Projekt SendSms

Jak sprawdzić, czy SMS został zaakceptowany przez użytkownika HTTP

Po wysłaniu SMS-a warto sprawdzić w bramie SMS, co zostało odebrane. Możesz sprawdzić log, otwierając szczegóły użytkownika HTTP w konsoli zarządzania Ozeki SMS Gateway. Poniższy film pokazuje, na co zwrócić uwagę.

Wideo 2 - Jak wysłać SMS z powyższym kodem Java (Samouczek wideo)

Jak sprawdzić, czy SMS został wysłany do sieci komórkowej

Ostatnim krokiem weryfikacji procedury jest sprawdzenie logów połączenia z siecią komórkową. Może być konieczne włączenie logowania w konfiguracji połączenia przed wysłaniem wiadomości, aby zobaczyć logi. Jeśli logowanie jest włączone, zobaczysz numer telefonu i tekst wysłanej wiadomości.

Wideo 3 - Jak włączyć logowanie w Ozeki SMS Gateway (Samouczek wideo)

Aby włączyć logowanie w użytkowniku HTTP, należy postępować zgodnie z tymi samymi instrukcjami.

Podsumowanie

Ten artykuł wyjaśnia podstawy wysyłania SMS-ów w Javie przy użyciu Ozeki SMS Gateway. Jeśli powyższe kroki zostały wykonane starannie, przesyłanie wiadomości w Javie nie powinno sprawiać problemów. Ozeki SMS Gateway oferuje wysoką wydajność, co oznacza, że może wysłać do 1000 SMS-ów na sekundę, więc z pewnością pomoże Twojej firmie utrzymać wysoki standard.

Upewnij się, że nie kończysz czytania tutaj, odwiedź stronę samouczków Ozeki i dowiedz się o takich rzeczach jak usuwanie SMS-ów w Javie.

Teraz jedyne, co pozostaje, to pobrać Ozeki SMS Gateway i zacząć pracę!

More information