
Teilen Sie:
Julia hat es sich zur Aufgabe gemacht, andere Entwickler durch die Erstellung von Tutorials, Anleitungen und praktischen Ressourcen zu unterstützen. Mit ihrem Hintergrund in den Bereichen Öffentlichkeitsarbeit und Bildung möchte sie Technologien zugänglicher machen und die Erfahrung von Entwicklern insgesamt verbessern. Man kann sie oft bei lokalen Veranstaltungen antreffen.
Erstellen eines SMS-Webdienstes mit Java
Wir haben dieses Beispiel mit JDK 11, Gradle 7.1, Gretty 3.0.5 und dem Vonage Server SDK für Java v.6.4.0 erstellt.
Die Vonage SMS API ist ein Dienst, der es Ihnen ermöglicht, SMS-Nachrichten überall auf der Welt zu senden und zu empfangen. Vonage bietet REST-APIs an, aber es ist viel einfacher, das Java-SDK zu verwenden, das wir für Sie geschrieben haben.
Sie haben bereits gelernt, wie man SMS-Nachrichten mit Java zu versenden. In diesem Tutorium gehen wir einen Schritt weiter und bauen einen Webdienst darum herum!
Sehen Sie sich den Quellcode auf GitHub.
Voraussetzungen
Bevor Sie beginnen, müssen Sie einige Dinge auf Ihrem Entwicklungsrechner installiert haben:
Gradle für die Erstellung Ihres Projekts
Vonage API-Konto
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.
In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.
Das Projekt erstellen
Zunächst müssen Sie Ihr Gradle-Projekt einrichten und das Vonage Java SDK herunterladen.
Erstellen Sie ein Verzeichnis, das Ihr Projekt enthält. Führen Sie innerhalb dieses Verzeichnisses gradle init.
Erstellen Sie ein neues Gradle-Projekt:
Führen Sie aus.
gradle init --type=java-applicationBefehlWählen Sie
Groovyals SkriptspracheWählen Sie
JUnit Jupiterals das Test-FrameworkStandard verlassen
Project nameStandard verlassen
Source package
Installieren Sie das Vonage Java SDK
Als nächstes öffnen Sie die build.gradle Datei und fügen Sie dem Block Abhängigkeiten Folgendes hinzu:
// Install the Vonage Java SDK
implementation 'com.vonage:client:6.4.0'Wenn Sie nun Ihre Konsole in dem Verzeichnis öffnen, in dem sich diese build.gradle Datei enthält, können Sie ausführen:
Dieser Befehl lädt das Vonage Java SDK herunter und speichert es für später. Wenn Sie Quellcode hätten, würde er diesen auch kompilieren - aber Sie haben noch keinen geschrieben. Das sollten wir ändern!
Erstellen eines Webdienstes zum Senden von SMS
Wir werden einen kleinen HTTP-Dienst erstellen und ihn dann mit Postman testen. Glücklicherweise ist dies mit Gradle relativ einfach.
Wenden Sie zunächst das Gretty-Plugin auf die build.gradle Datei an, indem Sie dies zu Ihrem plugins Block hinzufügen:
id 'war'
id 'org.gretty' version '3.0.5'Die erste Zeile teilt Gradle mit, dass es eine War-Datei erstellen soll, die die Quelldateien in src/main/java und src/main/webapp. Die zweite Zeile fügt die Möglichkeit hinzu, Ihre Webanwendung direkt aus Gradle heraus mit dem Jetty-Servlet-Container zu starten!
Als nächstes setzen wir den Kontextpfad auf / der Einfachheit halber.
Fügen Sie den folgenden Block zu build.gradle:
gretty {
contextPath = '/'
}ausführen. gradle appRun (beachten Sie, dass Sie appRun und nicht run um den Webserver auszuführen). Beim ersten Mal wird es eine Weile dauern, bis einige Abhängigkeiten heruntergeladen sind.
Am Ende sollten Sie etwa so etwas sehen:
Jetty führt jetzt Ihren (leeren) Webservice aus. Rufen Sie die URL auf, die Sie sehen, um zu überprüfen, ob der Dienst ordnungsgemäß läuft. Sie sollte in etwa wie folgt aussehen:
Empty web page
Lassen Sie uns nun ein Servlet schreiben! Erstellen Sie eine Datei namens src/main/java/sms/webservice/SendSMSServlet.java.
package sms.webservice;
import com.vonage.client.VonageClient;
import com.vonage.client.VonageClientException;
import com.vonage.client.sms.MessageStatus;
import com.vonage.client.sms.SmsSubmissionResponse;
import com.vonage.client.sms.messages.TextMessage;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServlet;
public class SendSMSServlet extends HttpServlet {
private String VONAGE_BRAND_NAME;
private VonageClient client;
public void init(ServletConfig config) {
// Load configuration from the servlet container:
VONAGE_BRAND_NAME = config.getInitParameter("from_number");
String api_key = config.getInitParameter("api_key");
String api_secret = config.getInitParameter("api_secret");
client = VonageClient.builder().apiKey(api_key).apiSecret(api_secret).build();
}
protected void doPost(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException {
try {
// Extract form parameters from the request:
String to_number = req.getParameter("to");
String message = req.getParameter("message");
TextMessage sms = new TextMessage(VONAGE_BRAND_NAME,
to_number,
message
);
SmsSubmissionResponse response = client.getSmsClient().submitMessage(sms);
if (response.getMessages().get(0).getStatus() == MessageStatus.OK) {
System.out.println("Message sent successfully.");
resp.getWriter().println(response.getMessages().get(0));
} else {
System.out.println("Message failed with error: " + response.getMessages().get(0).getErrorText());
}
} catch (VonageClientException nce) {
throw new ServletException(nce);
}
}
}Und dann müssen wir das Servlet in unserem Servlet-Container konfigurieren, indem wir die folgende Datei unter src/main/webapp/WEB-INF/web.xml:
<web-app>
<servlet>
<servlet-name>send-sms</servlet-name>
<servlet-class>sms.webservice.SendSMSServlet</servlet-class>
<init-param>
<param-name>from_number</param-name>
<param-value>VONAGE_BRAND_NAME</param-value>
</init-param>
<init-param>
<param-name>api_key</param-name>
<param-value>VONAGE_API_KEY</param-value>
</init-param>
<init-param>
<param-name>api_secret</param-name>
<param-value>VONAGE_API_SECRET</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>send-sms</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>Ausfüllen VONAGE_API_KEY und VONAGE_API_SECRET mit den Werten, die Sie in Ihrem Dashboard der Vonage API. Sie müssen Folgendes ersetzen VONAGE_BRAND_NAME durch eine Ihrer Vonage virtuellen Numbers.
Hinweis: In einigen Ländern (USA),
VONAGE_BRAND_NAMEeine Ihrer virtuellen Vonage Numbers sein. In anderen Ländern (Großbritannien) können Sie eine alphanumerische Zeichenfolge wählen, z. B. Ihren Markennamen wie AcmeInc. Weitere Informationen über länderspezifische SMS-Funktionen finden Sie auf dem Entwicklerportal.
Als nächstes führen Sie gradle appRun. Wenn alles korrekt gebaut wurde, starten wir Postman und stellen eine POST-Anfrage an http://localhost:8080/send-sms/und geben dabei an message und to im Body wie unten gezeigt:
Making a request with Postman
Ich hoffe, es hat funktioniert! Jetzt haben Sie also einen REST-Webdienst für den Versand von SMS-Nachrichten erstellt! In Wirklichkeit gibt es noch viel mehr zu tun, bevor Sie diesen Dienst einsetzen. Sie könnten überlegen, ob Sie eine Authentifizierung hinzufügen (sonst könnte jeder eine Nachricht mit Ihrem Vonage API-Konto senden!), ein schönes Webformular für die Übermittlung an den Dienst, und die Verbesserung der Fehlerbehandlung - aber dies ist ein guter Anfang!
Referenzen
Teilen Sie:
Julia hat es sich zur Aufgabe gemacht, andere Entwickler durch die Erstellung von Tutorials, Anleitungen und praktischen Ressourcen zu unterstützen. Mit ihrem Hintergrund in den Bereichen Öffentlichkeitsarbeit und Bildung möchte sie Technologien zugänglicher machen und die Erfahrung von Entwicklern insgesamt verbessern. Man kann sie oft bei lokalen Veranstaltungen antreffen.
