Como enviar SMS a partir de Java
O seguinte exemplo de aplicação de console escrita na linguagem de programação Java vai mostrar-lhe a forma como pode enviar pedidos HTTP para o Gateway de SMS e obter também a mensagem de resposta. Estes pedidos HTTP podem ser usados para enviar mensagens SMS e pode facilmente configurar os detalhes da mensagem SMS modificando as variáveis que contêm toda a informação relativa à mensagem SMS.
O que é uma API de SMS em Java?A API de SMS em Java permite-lhe implementar serviços de SMS na sua aplicação Java. A API comunica com o Gateway de SMS usando pedidos HTTP que enviam a mensagem e retornam com uma mensagem de resposta.
Pré-requisitos- Apache NetBeans IDE 12.0 instalado
- Ozeki 10 SMS Gateway instalado
- Um utilizador de API HTTP configurado
- Abra o Apache NetBeans IDE
- Clique em 'New project...'
- Crie uma nova aplicação Java
- Nomeie o projeto e o pacote
- Crie uma nova classe Java
- Copie e cole o código-fonte de exemplo abaixo
- Execute a aplicação Java
- Selecione a classe principal, se necessário
Exemplo de código-fonte de SMS em Java
O seguinte exemplo de código-fonte escrito na linguagem de programação Java é livre para uso, pode simplesmente implementá-lo no seu projeto, ou pode modificar o código-fonte para usá-lo noutros projetos ou aplicações. Se desejar executar este código de exemplo, só precisa de criar uma nova aplicação Java com uma única classe Java e executar o projeto como pode ver nas instruções passo a passo e no vídeo acima.
package tester; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class HttpApiTester { public static void main(String[] args) { TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } @Override public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } } }; try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HostnameVerifier allHostsValid = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); } catch (GeneralSecurityException e) { System.out.println(e.getMessage()); } try { StringBuilder sendString = new StringBuilder(); String username = "john"; String password = "Xc3ffs"; String messagetype = "SMS:TEXT"; String httpUrl = "https://127.0.0.1:9508/"; String recipient = URLEncoder.encode("+36201324567", "UTF-8"); String messagedata = URLEncoder.encode("TestMessage", "UTF-8"); sendString.append(httpUrl).append("api?action=sendmessage"). append("&username=").append(username).append("&password="). append(password).append("&recipient=").append(recipient). append("&messagetype=").append(messagetype).append("&messagedata="). append(messagedata); System.out.println("Sending request: " + sendString.toString()); URL url = new URL(sendString.toString()); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); BufferedReader br = null; System.out.println("Http response received: "); if (con.getResponseCode() == 200) { br = new BufferedReader(new InputStreamReader(con.getInputStream())); String strCurrentLine; while ((strCurrentLine = br.readLine()) != null) { System.out.println(strCurrentLine); } } else { br = new BufferedReader(new InputStreamReader(con.getErrorStream())); String strCurrentLine; while ((strCurrentLine = br.readLine()) != null) { System.out.println(strCurrentLine); } } } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
Passo 1 - Abrir o Apache NetBeans IDE
O primeiro passo para criar um aplicativo Java que pode enviar mensagens SMS é abrir o Apache NetBeans IDE no seu computador. O Apache NetBeans fornece editores, assistentes e modelos para ajudá-lo a criar aplicativos em Java, PHP e muitas outras linguagens. Se você ainda não baixou o Apache NetBeans, pode fazer isso na seção de Pré-requisitos. Depois de instalá-lo, basta abri-lo a partir do seu desktop, como na Figura 1.
Depois de abrir o Apache NetBeans IDE, ele é exibido com a janela principal. Aqui, você pode criar o aplicativo Java necessário para enviar mensagens SMS. Para isso, como você pode ver na Figura 2, clique em 'Arquivo' na barra de ferramentas e, em seguida, selecione a opção 'Novo projeto...'.
Em seguida, uma nova janela é exibida, contendo todos os tipos de projetos que podem ser criados no Apache NetBeans. Aqui, você pode criar uma aplicação Java simples ou selecionar entre tipos de projetos mais avançados. Para este exemplo, você pode usar a aplicação Java simples, então selecione-a na lista e, como na Figura 3, clique em Avançar.
No próximo passo, você precisa fazer algumas configurações básicas para a aplicação Java. Como você pode ver na Figura 4, você pode dar um nome ao projeto. Também pode definir a localização do projeto e, por último, especificar um nome para o pacote. Se terminou a configuração, basta clicar em Concluir.
O projeto de aplicação Java criado está vazio, então não contém nenhum arquivo com código-fonte, portanto, você precisa criar um. Para isso, selecione o pacote do seu projeto e clique com o botão direito do mouse. Na janela pop-up, como mostra a Figura 5, selecione Novo e, em seguida, clique em 'Classe Java...' para criar uma nova classe Java no seu aplicativo.
Antes de concluir a criação da classe Java, você precisa especificar um nome para a classe. Isso pode ser feito facilmente, como mostra a Figura 6. Depois de dar o nome correto para a classe Java, basta clicar no botão Concluir para criar a classe Java com sucesso.
A próxima coisa que você precisa fazer é colocar o código de exemplo no seu aplicativo Java. Para isso, basta rolar até o código de exemplo, copiar todo o código-fonte para a área de transferência e colá-lo na sua classe Java recém-criada. Neste ponto, você pode executar o aplicativo Java, então basta clicar no botão Executar na barra de ferramentas. Na primeira execução, como demonstra a Figura 7, você precisa selecionar a classe principal para execução. Então, selecione a classe HttpApiTester e clique em 'Selecionar Classe Principal'.
Se você fez tudo corretamente até este ponto, o aplicativo será iniciado e você poderá ver o resultado na janela do console, como mostra a Figura 8. Esta janela exibe a requisição HTTP que foi iniciada e enviada para o SMS Gateway, e também exibe a resposta do SMS Gateway, que indica se o envio da mensagem SMS foi bem-sucedido ou não.
Passo 9 - Verifique o resultado do envio no log do Ozeki
No Ozeki 10 SMS Gateway, você pode acompanhar as mensagens enviadas pelo seu aplicativo, já que o serviço HTTP API registra todos os eventos que ocorrem enquanto está ativado. Portanto, após abrir o SMS Gateway e selecionar os detalhes do serviço HTTP API, você poderá ver os eventos. Como mostra a Figura 9, o serviço registrou um evento quando o aplicativo Java de exemplo enviou a solicitação HTTP para o serviço.
A forma como o SMS Gateway processa as mensagens também pode ser visualizada pelos eventos. Para isso, abra a conexão do Usuário HTTP API, que você precisou configurar anteriormente. A Figura 10 demonstra como a conexão trata a solicitação HTTP e envia a mensagem para o destinatário que você especificou no seu aplicativo Java.
Você aprendeu como enviar SMS a partir de Java com este artigo. Isso significa que você pode implementar serviços de SMS em seus aplicativos Java. A base desta solução é o Ozeki SMS Gateway. Isso significa que você não terá problemas de desempenho ou latência no envio de SMS. Dessa forma, suas soluções Java podem atender a mais necessidades dos clientes e serão versáteis. Também permitirão que o fluxo de informações seja mais rápido e fácil.
Para entender melhor todo o sistema, sinta-se à vontade para conferir as páginas de tutorial do Ozeki sobre recebimento de SMS em Java, ou tente implementar serviços de SMS em outros projetos. Por exemplo, use a API HTTP SMS com PHP.
O próximo passo é baixar o Ozeki SMS Gateway e começar a desenvolver agora!
More information