Como receber um SMS em Java
A maneira mais simples de enviar SMS a partir de Java é usar a API HTTP/Rest de SMS integrada do Ozeki SMS Gateway. Ao usar esta API, você enviará mensagens SMS fazendo uma requisição HTTP Post para o gateway de SMS. A requisição HTTP Post conterá uma mensagem formatada em JSON. O gateway de SMS enviará este SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para a sua requisição.
O exemplo de código Java para SMS abaixo demonstra como você pode receber SMS usando a API HTTP Rest de SMS do Ozeki SMS Gateway com a biblioteca Java Ozeki.Libs.Rest. Esta biblioteca é fornecida gratuitamente, e você pode usá-la e modificá-la em qualquer um dos seus projetos.
Main.javaimport 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); } }
Como usar o exemplo de SMS em Java:
Você pode usar a classe MessageApi para receber o SMS do gateway de SMS. O gateway de SMS encaminhará as mensagens para você a partir da pasta Inbox.
Baixar ReceiveSms.java
O código-fonte explicado neste artigo pode ser baixado, usado e modificado gratuitamente.
Download: ReceiveSms.java.zip (89.6Kb)
O arquivo ReceiveSms.java.zip contém a biblioteca Ozeki, que fornece todas as ferramentas necessárias para enviar, marcar, receber e excluir mensagens SMS. Você também encontrará um arquivo Main.java no projeto, que contém o código de exemplo para mostrar como receber mensagens SMS. Este código de exemplo está listado abaixo.
Para receber SMS do Java:
- Instale o Ozeki SMS Gateway
- Conecte o Ozeki SMS Gateway à rede móvel
- Envie um SMS de teste da interface gráfica do Ozeki
- Crie um usuário da API HTTP de SMS
- Apache NetBeans
- Crie um projeto chamado ReceiveSms
- Coloque o código em um arquivo Main.java recém-criado ou use o arquivo Main.java no .zip
- Crie uma API para receber suas mensagens
- Use o método DownloadIncoming para receber sua mensagem
- Leia a mensagem de resposta no console
- Verifique os logs no gateway de SMS
Para poder enviar, receber e excluir SMS do Java, primeiro você precisa instalar o Ozeki SMS Gateway. O gateway de SMS pode ser instalado no mesmo computador onde você desenvolve seu código Java no Apache NetBeans. Após a instalação, o próximo passo é conectar o Ozeki SMS Gateway à rede móvel. Você pode enviar um SMS de teste da interface gráfica do Ozeki para verificar se sua conexão com a rede móvel está funcionando. O passo final para preparar seu ambiente é criar um usuário da API HTTP de SMS. Crie um usuário com o nome "http_user" e senha "qwe123" para fazer o exemplo funcionar sem modificações.
Após a configuração do ambiente, você pode executar seu código Java.
URL da API HTTP para receber SMS do JavaPara receber SMS do Java, seu Java terá que fazer uma requisição HTTP para o gateway de SMS. A URL da API é mostrada abaixo. Observe que o endereço IP (127.0.0.1) deve ser substituído pelo endereço IP do seu gateway de SMS. Se o Ozeki SMS Gateway estiver instalado no mesmo computador onde o aplicativo Java de SMS está sendo executado, pode ser 127.0.0.1. Se estiver instalado em um computador diferente, deve ser o endereço IP desse computador.
http://127.0.0.1:9509/api?action=rest
Para autenticar o cliente Java de SMS, você precisa enviar o nome de usuário e senha em uma string codificada em base64 para o servidor em uma requisição HTTP. O formato usado é: base64(nome de usuário+":"+senha). Em Java, você pode usar o seguinte código para fazer essa codificação:
var usernamePassword = username + ":" + password; var encodedUsernamePassword = usernamePassword.getBytes(); return "Basic " + Base64.getEncoder().encodeToString(encodedUsernamePassword);
Por exemplo, se você codificar o nome de usuário 'http_user' e a senha 'qwe123', você obterá a seguinte string codificada em base64: aHR0cF91c2VyOnF3ZTEyMw==. Para enviar
Cabeçalho da requisição HTTP para receber SMS do JavaPara excluir uma mensagem SMS, você precisa incluir as seguintes linhas como cabeçalhos na requisição HTTP. Observe que incluímos um cabeçalho de tipo de conteúdo e um cabeçalho de Autorização.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Requisição HTTP para receber SMS do Java
Para excluir o SMS, sua aplicação Java enviará uma requisição HTTP semelhante à mostrada abaixo. Observe que esta requisição contém uma parte de cabeçalho HTTP e uma parte de corpo HTTP. O corpo HTTP é uma string de dados codificada em JSON. Ela contém o número do destinatário e o texto da mensagem.
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
Resposta HTTP recebida pelo exemplo de SMS em Java
Assim que o gateway SMS receber esta requisição, ele gerará uma resposta HTTP. A resposta HTTP conterá um código de status para indicar se a submissão do SMS foi bem-sucedida ou não. Ela também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre a submissão da mensagem.
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" } ] } ] } }
Como enviar SMS do Java usando a API de SMS Java (Tutorial em vídeo)
Este vídeo mostra como criar um novo projeto no Apache NetBeans, como nomeá-lo para ReceiveSMS. Uma vez que a solução é criada, você pode notar que há uma pasta chamada <default package> no seu projeto dentro da pasta Source Packages. É aqui que você criará ou colará o arquivo Main.java. Em seguida, você deve colar a pasta Ozeki na pasta Source Packages e estas são todas as preparações necessárias para receber um SMS usando Java.
Exemplo de recebimento de SMS em Java: Main.java
Como verificar se o SMS foi aceito pelo usuário HTTP
Após a requisição ser enviada, é uma boa ideia verificar seu gateway SMS, para ver o que foi recebido. Você pode verificar o log abrindo os detalhes do usuário HTTP no console de gerenciamento do Ozeki SMS Gateway. O vídeo a seguir mostra o que procurar.
Resumo
O principal objetivo deste artigo foi demonstrar o recebimento de SMS em Java com a ajuda do Ozeki SMS Gateway. Se os passos foram seguidos cuidadosamente, a transferência de mensagens da caixa de entrada para o programa Java do usuário não será mais um problema. Se você deseja coletar as mensagens recebidas em um programa Java, esta solução é uma maneira perfeita de fazê-lo. O Ozeki SMS Gateway pode ser baixado do site da Ozeki e pode ser usado gratuitamente durante um período de teste, para que você possa ter certeza de que este aplicativo é feito para você.
Continue a leitura na página de tutoriais da Ozeki, onde podem ser encontrados guias semelhantes sobre tópicos como exclusão em Java.
A única coisa a fazer agora é baixar o Ozeki SMS Gateway e começar a trabalhar!
More information
- Java enviar SMS com a API REST HTTP (exemplo de código)
- Java enviar múltiplos SMS com a API REST HTTP (exemplo de código)
- Java agendar SMS com a API REST HTTP (exemplo de código)
- Java excluir SMS com a API REST HTTP (exemplo de código)
- Java receber SMS com a API REST HTTP (exemplo de código)
- Github: API Java SMS