Jak odbierać SMS w Javie

Najprostszym sposobem wysyłania SMS-ów 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 odbierać sms z javy
Rysunek 1 - Jak odbierać SMS z Javy

Kod Java do wysyłania sms na telefon

Przykładowy kod Java sms poniżej demonstruje, jak możesz odbierać SMS używając 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 api = new MessageApi(configuration);
        
        var result = api.DownloadIncoming();
        
        System.out.println(result);
    }
}
	

Jak używać przykładowego kodu Java sms:

Możesz użyć klasy MessageApi do odbioru SMS z bramki SMS. Bramka SMS przekaże ci wiadomości z folderu Odebrane.

Pobierz ReceiveSms.java

Kod źródłowy omówiony w tym artykule może być pobrany, użyty i zmodyfikowany bezpłatnie.
Pobierz: ReceiveSms.java.zip (89.6Kb)

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

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

Rysunek 2 - Katalog ReceiveSms.java

Jak odbierać SMS z Javy (Szybkie kroki)

Aby odbierać sms z Javy:

  1. Zainstaluj Ozeki SMS Gateway
  2. Podłącz Ozeki SMS Gateway do sieci komórkowej
  3. Wyślij testowego sms z interfejsu Ozeki
  4. Utwórz użytkownika HTTP sms api
  5. Apache NetBeans
  6. Utwórz projekt o nazwie ReceiveSms
  7. Umieść kod w nowo utworzonym pliku Main.java lub użyj pliku Main.java z .zip
  8. Utwórz api do odbierania wiadomości
  9. Użyj metody DownloadIncoming do odbioru wiadomości
  10. Przeczytaj odpowiedź w konsoli
  11. Sprawdź logi w bramce SMS

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

Aby móc wysyłać, odbierać i usuwać SMS 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ć testowego 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 odbierania sms z Javy

Aby odbierać 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 zainstalowana na tym samym komputerze, na którym działa aplikacja Java sms, może to być 127.0.0.1. Jeśli jest zainstalowana na innym komputerze, powinien to być adres IP tego komputera.

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

Uwierzytelnianie HTTP do odbierania sms z Javy

Aby uwierzytelnić klienta Java 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 Javie 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 odbierania SMS z Javy

Aby usunąć wiadomość SMS, musisz uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Zauważ, że uwzględniamy typ zawartości i nagłówek Authorization.

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

Odbieranie SMS za pomocą żądania HTTP w Javie

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

GET /api?action=receivemsg&folder=inbox HTTP/1.1
HTTP2-Settings: AAEAAEAAAAIAAAABAAMAAABkAAQBAAAAAAUAAEAA
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
Content-Length: 0
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
User-Agent: Java-http-client/16.0.1
	

Odpowiedź HTTP otrzymana przez przykład SMS w Javie

Po otrzymaniu tego żądania, brama SMS wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, wskazujący, czy żądanie wysłania SMS zakończyło się sukcesem czy nie. Zwróci również strukturę zakodowaną w 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": "",
	"data": {
	  "folder": "inbox",
	  "limit": "1000",
	  "data": [
	    {
	      "message_id": "0401f09a-5edb-4728-9bbc-0426fd9bea09",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36201111111",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 1",
	      "create_date": "2021-06-11 14:01:15",
	      "valid_until": "2021-06-18 14:01:15",
	      "time_to_send": "2021-06-11 14:01:15",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "5302e7df-18c4-4e01-82e7-181967bc8516",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36202222222",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 2",
	      "create_date": "2021-06-11 14:01:15",
	      "valid_until": "2021-06-18 14:01:15",
	      "time_to_send": "2021-06-11 14:01:15",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "95c60379-e541-4be1-b698-adfde4e425c8",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36203333333",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 3",
	      "create_date": "2021-06-11 14:01:15",
	      "valid_until": "2021-06-18 14:01:15",
	      "time_to_send": "2021-06-11 14:01:15",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    }
	  ]
	}
}
	

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 ReceiveSMS. Po utworzeniu rozwiązania możesz zauważyć, że 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 odbierania SMS w Javie.

Wideo 1 - Jak pobrać Ozeki.Libs.Rest i skonfigurować projekt (Samouczek wideo)

Przykład odbierania SMS w Javie: Main.java

Rysunek 3 - Projekt ReceiveSms

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

Po przesłaniu żądania 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ższe wideo pokazuje, na co zwrócić uwagę.

Wideo 2 - Jak odbierać SMS za pomocą powyższego kodu Java (Samouczek wideo)

Podsumowanie

Głównym celem tego artykułu było zademonstrowanie odbierania SMS w Javie przy pomocy Ozeki SMS Gateway. Jeśli kroki zostały wykonane starannie, przesyłanie wiadomości z folderu odbiorczego do programu Java nie powinno stanowić już problemu. Jeśli chcesz zbierać przychodzące wiadomości w programie Java, to rozwiązanie jest idealnym sposobem na to. Ozeki SMS Gateway można pobrać ze strony Ozeki i korzystać z niego bezpłatnie w okresie próbnym, aby upewnić się, że ta aplikacja jest dla Ciebie.

Kontynuuj czytanie na stronie samouczków Ozeki, gdzie znajdziesz podobne przewodniki na tematy takie jak usuwanie w Javie.

Jedyne, co teraz pozostaje, to pobrać Ozeki SMS Gateway i zacząć pracę!

More information