02 51 76 0 34

Accès client :  mot de passe oublié   inscription

       (oubli)

Envoyer un SMS en Java (HttpClient, Java 11+)

Mis à jour le 22 juillet 2026

La classe complète pour envoyer un SMS depuis Java avec java.net.http.HttpClient (standard depuis Java 11) : aucune dépendance Maven ou Gradle, un POST HTTPS et le code retour en réponse.

1La classe complète (Java 11+, aucune dépendance)

// Sms123.java — Envoi de SMS professionnel via l'API 123-SMS.net
// Copyright (C) 123-Sms.net — licence MIT
// Java 11 ou plus recent, aucune dependance (java.net.http standard).
//
// Compilation :  javac Sms123.java
// Execution   :  java Sms123
// Identifiants : espace client https://www.123-sms.net > rubrique API.

import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class Sms123 {

    static final String IDENTIFIANT   = "votre_identifiant";
    static final String CLE_API = "CLEAPI";
    static final String API_URL = "https://www.123-sms.net/http.php";

    /** Envoie un SMS et renvoie le code retour de l'API (80 = envoye). */
    public static String envoyerSms(String numero, String message) throws Exception {
        String corps = "email="   + enc(IDENTIFIANT)
                     + "&pass="   + enc(CLE_API)
                     + "&numero=" + enc(numero)
                     + "&message="+ enc(message);
        HttpClient client = HttpClient.newBuilder()
                .connectTimeout(Duration.ofSeconds(10)).build();
        HttpRequest requete = HttpRequest.newBuilder(URI.create(API_URL))
                .timeout(Duration.ofSeconds(15))
                .header("Content-Type", "application/x-www-form-urlencoded")
                .POST(HttpRequest.BodyPublishers.ofString(corps))
                .build();
        // POST en HTTPS : la cle API ne transite jamais en clair
        return client.send(requete, HttpResponse.BodyHandlers.ofString())
                     .body().trim();
    }

    private static String enc(String s) {
        return URLEncoder.encode(s, StandardCharsets.UTF_8);
    }

    public static void main(String[] args) throws Exception {
        String code = envoyerSms("33601020304", "Bonjour, ceci est un test 123-SMS.");
        switch (code) {
            case "80": System.out.println("80 : le message a ete envoye."); break;
            case "81": System.out.println("81 : enregistre pour un envoi differe."); break;
            case "82": System.out.println("82 : identifiants invalides."); break;
            case "83": System.out.println("83 : credit insuffisant."); break;
            case "84": System.out.println("84 : numero invalide."); break;
            default:   System.out.println("Code retour API : " + code);
        }
    }
}

2Installation et utilisation

  • Téléchargez l'archive ou copiez la classe Sms123.java.
  • Renseignez IDENTIFIANT et CLE_API (espace client › API).
  • Compilez et lancez : javac Sms123.java puis java Sms123.
  • En production : injectez les identifiants par variables d'environnement et réutilisez la méthode envoyerSms(numero, message).
La clé API se génère dans l'espace client, rubrique API › Générer Clé API. Les codes réponse et le retour des accusés de réception par HTTP sont détaillés dans la documentation technique.

Questions fréquentes

Quelle version de Java est requise ?

Java 11 ou plus récent : la classe n'utilise que java.net.http, intégré au JDK. Aucun dépôt Maven/Gradle à configurer. Pour les environnements plus anciens (Java 8 et avant), l'exemple historique par sockets Java reste disponible.

Puis-je l'utiliser dans une application Android ?

Techniquement oui (API 33+ pour java.net.http, sinon OkHttp), mais ne placez jamais votre clé API dans une application distribuée au public : faites transiter l'envoi par votre serveur, sinon la clé peut être extraite de l'APK.

Comment l'intégrer dans Spring Boot ou un batch ?

Déclarez la méthode dans un service et appelez-la depuis vos contrôleurs, schedulers ou listeners d'événements. Le client HTTP est thread-safe : instanciez-le une fois. Si vous êtes éditeur d'un logiciel Java, voir le partenariat éditeurs.

Comment suivre la livraison des SMS ?

Le code retour est immédiat (80 = envoyé, 82 = identifiants invalides, 83 = crédit insuffisant…) et les accusés de réception peuvent être reçus par HTTP avec le paramètre refaccuse — détails dans la documentation technique.

Téléchargement

Classe Java (.zip)

Licence MIT — libre et gratuit.

🔗 Voir sur GitHub

L'essentiel

  • API HTTPS en un appel : identifiant, clé API, numéro, message.
  • Code réponse immédiat + accusés de réception par HTTP.
  • Crédits prépayés sans abonnement ni expiration.
  • Adaptations spécifiques développées gratuitement.