Bab ini adalah bagian pertama dari mengirim pesan teks. Mari kita bicara tentang kode untuk mengirim pesan teks secara serempak/asinkron. Dalam beberapa artikel berikutnya, kami akan sedikit meningkatkan fungsi dan menambahkan batas pada frekuensi pengiriman dan waktu pengiriman harian.
Mungkin ada banyak cara untuk mengirim pesan teks. Metode kami adalah menggunakan layanan yang disediakan oleh penyedia layanan. Secara umum, layanan ini bebas bahasa. Di sini kami menggunakan Java untuk menulis program sampel.
1. Antarmuka untuk mengirim pesan teks <BR /> Pilih penyedia layanan sesuai dengan situasi Anda sendiri.
2. Dokumen Pengembangan <BR /> Kita dapat melihat dari dokumen pengembangan. Anda dapat menggunakan permintaan HTTP secara langsung atau permintaan layanan web untuk mengirim pesan teks. Karena kode di folder Java dan JSP di folder demo Gunakan permintaan HTTP untuk mengirim pesan teks. Jadi saya tidak akan membahas detailnya di sini. Kami menggunakan WebService untuk menunjukkan pengiriman pesan teks.
3. Hasilkan Kode Klien
Dari dokumen antarmuka, kita tahu bahwa URL WebService WSDL adalah: http://106.ihuyi.cn/webservice/sms.php?wsdl maka kita dapat menjalankan perintah berikut untuk menghasilkan kode klien:
WSIMPORT -KEPE http://106.ihuyi.cn/webservice/sms.php?wsdl
Di antara mereka, WSimport adalah alat yang dilengkapi dengan JDK, dan opsi -KEPEP URL adalah "Simpan file yang dihasilkan". Perintah ini akan menghasilkan paket sms.cn.ihuyi._106 di direktori saat ini, serta banyak kelas. Selanjutnya, mulailah menulis kode kami sendiri.
4. Tentukan antarmuka
Untuk kenyamanan, di sini kita pertama kali mendefinisikan antarmuka:
Sms.java
Antarmuka publik SMS { / ** * Kirim SMS ke ponsel, kontennya adalah pesan * * @param Nomor ponsel * @param Pesan Konten SMS * @Return berhasil mengembalikan -1, jika tidak mengembalikan nilai lain * / int sendMessage (string seluler, string pesan);}Antarmuka ini sangat sederhana, hanya ada satu metode. Metode ini digunakan untuk mengirim pesan teks.
5. Kirim pesan teks secara bersamaan
Selanjutnya, pertama -tama kami mengimplementasikan kelas yang mengirim SMS secara sinkron:
IhuyismSimpl.java
IhuyismSimpl kelas publik mengimplementasikan sms {private string akun; kata sandi string pribadi; public void setAccount (String Account) {this.account = akun; } public void setPassword (kata sandi string) {this.password = kata sandi; } @Override public int sendMessage (string seluler, string pesan) {cn.ihuyi._106.sms factory = new cn.ihuyi._106.sms (); Smssoap smssoap = factory.getsmssoap (); SubmitResult kirim = smssoap.submit (akun, kata sandi, seluler, pesan); Int code = submit.getCode (); if (code == 2) {return -1; } System.out.println ("Kirim SMS gagal, kode:" + kode); Kode pengembalian; }}Dalam baris 17, kami memperoleh objek proxy dari objek jarak jauh. Kemudian kami dapat mengirim SMS, meminta saldo akun dan operasi lainnya melalui objek proxy ini.
Pada baris 18, konten SMS dikirimkan menggunakan metode pengiriman objek proxy. Informasi parameter dan makna nilai pengembalian dari metode ini dijelaskan secara rinci dalam dokumen antarmuka.
Pada baris 19, kami mendapatkan kode status hasilnya. Menurut instruksi pada dokumen, kode status adalah 2, menunjukkan bahwa pengiriman berhasil. Untuk kesederhanaan, kami hanya fokus pada situasi di mana pengajuan berhasil. Perlu dicatat bahwa kode status adalah 2, hanya menunjukkan bahwa pengiriman berhasil. Menurut situs web resmi "Respons dalam 3-5 detik, 100% kedatangan" di situs web resmi, kami dapat menyimpulkan. Jika pengajuan berhasil, pada dasarnya SMS akan berhasil dikirim dalam 3-5 detik. Menurut situasi jaringan pengguna, pengguna dapat menerima SMS dengan sedikit penundaan.
Ini juga sangat mudah untuk menggunakan kode ini untuk mengirim pesan teks. Anda dapat secara langsung membuat objek, mengatur akun dan kata sandi Anda dan mengirim pesan teks.
6. Kirim pesan teks secara tidak sinkron
Karena mengirim SMS melibatkan komunikasi jaringan, metode SendMessage mungkin memiliki penundaan. Untuk meningkatkan pengalaman pengguna, kami dapat menggunakan metode pengiriman SMS secara tidak sinkron. Prinsipnya sangat sederhana: Jika pengguna meminta untuk mengirim SMS, alih -alih secara langsung memanggil metode sendMessage IhuyismSimpl, kami menyimpan permintaan (produser), dan kemudian memberi tahu pengguna: SMS berhasil dikirim. Setelah itu, beberapa konsumen mengambil tugas dan hubungi metode SendMessage untuk mengirim SMS.
Di sini, saya menggunakan kumpulan utas untuk menyelesaikan tugas di atas:
Asyncsmsimpl.java
kelas publik ASYNCSMSIMPL mengimplementasikan SMS {public SMS Sendsms; ExecutorService Private ExecutorService = Executors.newfixedThreadPool (3); public void setSendMS (SMS SendSMS) {this.sendsms = sendsms; } @Override public int sendMessage (String Mobile, String Message) {coba {ExecutorService.submit (() -> sendsms.sendMessage (seluler, pesan)); } catch (Exception e) {sysemt.out.println ("Terjadi kesalahan saat mengirimkan tugas" + e); kembali 0; } return -1; } public void hancurkan () {coba {executorService.shutdown (); } catch (Exception e) {}}}Kode ini sangat sederhana. Anda dapat secara langsung menambahkan metode sendMessage (seluler, pesan) dari antarmuka SMS ke antrian tugas kumpulan utas sebagai tugas. Dengan cara ini, ketika ada utas gratis, sendsms.sendmessage (seluler, pesan) akan dieksekusi untuk mengirim SMS. Di sini kami berasumsi bahwa selama disimpan ke kumpulan utas, Anda dapat berhasil mengirim SMS. Karena mengirim kegagalan sebenarnya jarang terjadi.
Kirim pesan teks secara serempak/asinkron selesai. Dalam beberapa artikel berikutnya, kami akan melihat beberapa batasan umum, seperti: Anda hanya dapat mengirim sekali satu menit, Anda hanya dapat mengirim 5 kali sehari, dll.
Saya harap semua orang menyukai artikel ini.