使用Java发送短信

以下示例Java类sendms可用于从Java通过NowSMS发送SMS文本消息。该脚本也可以从以下位置下载 http://www.zgbianpofanghuwang.com/download/sendsms.java.txt.

要从Java发送MMS消息,请参阅: http://www.zgbianpofanghuwang.com/doc/submitting-mms-messages/send-mms-message-with-java

在此示例中定义的sendms类可用于发送简单的SMS文本消息,以及许多类型的二进制SMS消息,包括WAP Push。 (许多SMSC连接不支持二进制SMS支持。)

该类支持为NowSMS定义的许多URL参数,并且可以轻松地进行调整以支持其他参数。

以下示例说明了如何使用该类。

例–发送一条简单的短信:

sendsms.init();

sendsms.server = "//sample.smshosts.com/";

sendsms.用户 = "username";

sendsms.密码 = "password";

sendsms.电话号码 = "+9999999999";

sendsms.文本 = "这是一条测试信息";

sendsms.send();

NowSMS URL参数支持作为sendms类的方法,方法名称与URL参数名称匹配,但所有方法均使用小写字母。

除了URL参数方法外,还定义了以下其他方法:

sendsms.init();

init方法初始化SMS消息对象。

sendsms.server = "//sample.smshosts.com/";

服务器方法设置NowSMS服务器的URL地址。

sendsms.send();

send方法将SMS消息提交给NowSMS。 (send方法返回分配给已提交邮件的邮件ID列表,每行一个邮件ID,格式如下:MessageID = xxxxxxxxxxxxxx.req,收件人= xxxxxxxxxxxx)

支持的设置URL参数的方法:

sendsms.用户 = "username";

sendsms.密码 = "password";

这些方法指定了 “SMS Users” 提交邮件的帐户。

sendsms.电话号码 = "recipient";

此方法指定此消息应发送到的收件人电话号码。这可以是收件人电话号码的逗号分隔列表或通讯组列表名称。

sendsms.文本 = "text of message";

此方法指定消息的文本。 (或对于WAP Push消息,是与WAP Push URL关联的文本。)

sendsms.数据 = "hexstring";

此方法指定用于发送二进制SMS消息的二进制数据的十六进制字符串。

sendsms.乌德 = "hexstring";

此方法为SMS消息的用户数据标题(UDH)指定二进制数据的十六进制字符串。

sendsms.pid = "PID Value";

此方法指定代表此SMS消息的SMS协议ID(PID)的十六进制值。

sendsms.DCS = "DCS Value";

此方法指定一个十六进制值,表示此消息的SMS数据编码方案(DCS)的值。

sendsms.发件人 = "Sender";

此方法指定要为此消息指定的发件人(源)地址。 (注意:通过GSM调制解调器发送消息时,无法覆盖发件人地址。)

sendsms.smscroute = "route name";

此方法指定用于消息的出站SMSC路由。 (有关SMS消息路由的更多信息,请参阅 SMS消息路由逻辑

sendsms.要求的收据 = "Yes";

此方法可用于请求交货收据。

sendsms.源端口 = "3333";

sendsms.驱逐 = "3333";

这些方法可用于指定用于将SMS消息路由到接收方手机上的特定应用程序的源端口和目标端口。

sendsms.延迟到 = "YYYYMMDDHHMM";

此方法允许将消息提交到NowSMS并排队等待以后的处理。此参数的值应采用以下格式:“YYYYMMDDHHMM”,指示将邮件延迟到的日期和时间,其中YYYY是年份,MM是月份,DD是日期,HH是小时(以24小时格式),而MM是分钟。

sendsms.wapurl = "http://x/path";

指定应发送WAP推送消息,这是WAP推送消息中要发送的URL。

例–发送一条简单的短信:

sendsms.init();

sendsms.server = "//sample.smshosts.com/";

sendsms.用户 = "username";

sendsms.密码 = "password";

sendsms.电话号码 = "+9999999999";

sendsms.文本 = "这是一条测试信息";

sendsms.send();

例–将短信发送到手机上运行的Java小程序的特定应用程序端口:

sendsms.init();

sendsms.server = "http://127.0.0.1:8800/";

sendsms.用户 = "username";

sendsms.密码 = "password";

sendsms.电话号码 = "+9999999999";

sendsms.文本 = "这是一条测试信息";

sendsms.驱逐 = "3333";

sendsms.send();

例–发送WAP推送消息:

sendsms.init();

sendsms.server = "http://127.0.0.1:8800/";

sendsms.用户 = "username";

sendsms.密码 = "password";

sendsms.电话号码 = "+9999999999";

sendsms.文本 = "这是一条测试信息";

sendsms.wapurl = "http://www.zgbianpofanghuwang.com/";

sendsms.send();

完整的Java类如下所示。该脚本也可以从以下位置下载 http://www.zgbianpofanghuwang.com/download/sendsms.java.txt.

import java.net.*; 

import java.io.*; 

 

public class sendsms {

 

 

    public static String server;

    public static String 用户;

    public static String 密码;

    public static String 电话号码;

    public static String 文本;

    public static String 数据;

    public static String 乌德;

    public static String pid;

    public static String DCS;

    public static String 发件人;

    public static String 有效期;

    public static String 服务类型;

    public static String smscroute;

    public static String 要求的收据;

    public static String 源端口;

    public static String 驱逐;

    public static String 延迟到;

    public static String 语音信箱;

    public static String wapurl;

    public static String wapsl;

 

    public static String url_str;

 

    public static void init () {

        server = null;

        用户 = null;

        密码 = null;

        电话号码 = null;

        文本 = null;

        数据 = null;

        乌德 = null;

        pid = null;

        DCS = null;

        发件人 = null;

        有效期 = null;

        服务类型 = null;

        smscroute = null;

        要求的收据 = null;

        源端口 = null;

        驱逐 = null;

        延迟到 = null;

        语音信箱 = null;

        wapurl = null;

        wapsl = null;

    }

 

    public static void setvar (String argname, String argvalue) {

 

       if (argname != null) {

          if (argvalue != null) {

             url_str = url_str + "&" + argname + "=";

             try {

                String encoded = URLEncoder.encode (argvalue, "UTF-8");

                url_str = url_str + encoded;

             }

             catch (UnsupportedEncodingException e) {

                url_str = url_str + argvalue;

             }

          }

       }

 

    }

 

    public static String send () {

 

 

       String returnstring;

 

       returnstring = null;

 

       if (server == null) {

  	  System.out.println("未设置sendms.server值");

          return returnstring;

       }

 

       url_str = server + "?";

       setvar("user", 用户);

       setvar("password", 密码);

       setvar("phonenumber", 电话号码);

       setvar("text", 文本);

       setvar("data", 数据);

       setvar("udh", 乌德);

       setvar("pid", pid);

       setvar("dcs", DCS);

       setvar("sender", 发件人);

       setvar("validity", 有效期);

       setvar("servicetype", 服务类型);

       setvar("smscroute", smscroute);

       setvar("receiptrequested", 要求的收据);

       setvar("sourceport", 源端口);

       setvar("destport", 驱逐);

       setvar("delayuntil", 延迟到);

       setvar("voicemail", 语音信箱);

       setvar("wapurl", wapurl);

       setvar("wapsl", wapsl);

 

       try {

          URL url2=new URL(url_str); 

 

          HttpURLConnection connection = (HttpURLConnection) url2.openConnection(); 

          connection.setDoOutput(false); 

          connection.setDoInput(true); 

 

          String res=connection.getResponseMessage(); 

 

          System.out.println("Response Code  ->"+res); 

 

          int code = connection.getResponseCode () ; 

 

          if ( code == HttpURLConnection.HTTP_OK ) {

             //Get response 数据.

             BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

 

             String str;

 

             while( null != ((str = in.readLine()))) {

                if (str.startsWith("MessageID=")) {  

                   returnstring = returnstring + str + "\r\n";

                   System.out.println(str);

                }

             }    

             connection.disconnect() ; 

          }

       }

       catch(IOException e) {

          System.out.println("无法创建新的网址"+e.getMessage());

       }

       return returnstring;

   }

}

 

使用此脚本的系统要求:

该脚本连接到NowSMS服务器,并将请求发送到NowSMS服务器以发送消息。

如果您没有安装NowSMS服务器,则此脚本将不起作用。

NowSMS可以作为云服务使用,也可以安装在Windows PC上。要发送SMS或MMS消息,NowSMS还需要GSM调制解调器,Android手机或SMS服务提供商连接。

可以从以下网址下载NowSMS软件的30天免费试用版: http://www.zgbianpofanghuwang.com/download-free-trial

现在的SMS / MMS网关或 NowSMS Lite 可以使用。 NowSMS Lite 可以使用单个GSM调制解调器或Android手机作为调制解调器连接来发送SMS和MMS消息。完整产品支持多个调制解调器和/或服务提供商连接。

在尝试使用脚本与NowSMS进行交互之前,您应验证NowSMS的配置正确,并且可以使用其内置的Web界面发送SMS消息。对于Android手机或GSM调制解调器连接,可在此处找到快速入门指南: http://www.zgbianpofanghuwang.com/doc/quick-start-guide

一旦确认NowSMS可以独立运行,就必须更改脚本中引用的IP地址以指向NowSMS服务器。我们的示例脚本使用的IP地址为127.0.0.1,这是当前PC的特殊回送地址。如果您的脚本在不同于NowSMS服务器的系统上运行,请将127.0.0.1更改为对您的环境有效的主机名或IP地址。还需要在NowSMS服务器上定义一个与脚本中的用户帐户匹配的帐户凭据的SMS用户帐户。