java通过SMSlib发送短信出现异常

来源:互联网 发布:excel数据不能排序 编辑:程序博客网 时间:2024/05/05 12:45

我现在有一个需求是利用java程序跟GSM MODEM短信猫结合来达到发短信的目的!在网上下载了些例子来看,把SMSlib相应的包导进工程,并把相应的文件也仿照要求放到相应的目录下,但一运行发短信程!序,就会报下面这个异常!

下面是我的发短信的源代码:

package test;






import java.util.ArrayList;


import java.util.LinkedList;


import java.util.List;






import org.apache.log4j.Level;


import org.apache.log4j.Logger;


import org.smslib.AGateway;


import org.smslib.AGateway.Protocols;


import org.smslib.GatewayException;


import org.smslib.InboundMessage;


import org.smslib.Message.MessageEncodings;


import org.smslib.OutboundMessage;


import org.smslib.Service;


import org.smslib.modem.SerialModemGateway;






public class SendSmsHandler {  


    private static final Logger logger = Logger.getLogger(SendSmsHandler.class);  


  


    private Service smsService;  


  


    /** 


     * 发送短信的类


     */  


    public SendSmsHandler() {  


        smsService = Service.getInstance();  //获得服务实例  单例模式的


        List<AGateway> agatewayList = new ArrayList<AGateway>();  


  


        //String portName = "COM3";//"/dev/ttyUSB0";// COM24  //使用的端口号


        SerialModemGateway gateway = new SerialModemGateway(  


                "modem.com3", "COM3", 9600, "wavecom", "");  //通过端口号频率名称等内容获得设备实例


        gateway.setInbound(true);  


        gateway.setOutbound(true);  


        gateway.setProtocol(Protocols.PDU);  //发送凡是PDU


        gateway.setSimPin("0000");  


        agatewayList.add(gateway);  //放到队列中,群发可以放多条就可以了


        try {  


            for (AGateway gatewayTmp : agatewayList) {  


                smsService.addGateway(gatewayTmp);  


            }  


        } catch (GatewayException ex) {  


            logger.error(ex.getMessage());  


        }  


    }  


  


    /** 


     *  启动发送短信的服务


     */  


    public void start() {  


        logger.info("SMS service start.....");  


        try {  
        smsService.S.SERIAL_POLLING = true;
            smsService.startService();  


        } catch (Exception ex) {  


            logger.error("SMS service start error:", ex);  


        }  


    }  


  


    /** 


     *  停止发送短信服务


     */  


    public void destroy() {  


        try {  


            smsService.stopService();  //停止服务


        } catch (Exception ex) {  


            logger.error("SMS service stop error:", ex);  


        }  


        logger.info("SMS service stop");  


    }  


  


    /** 


     * send SMS 


     * 发送短信的方法


     * @param msg 发送的内容


     * @return Boolean 返回是否发送成功


     */  


    public Boolean sendSMS(OutboundMessage msg) {  


        try {  


            msg.setEncoding(MessageEncodings.ENCUCS2);  //设置编码


            return smsService.sendMessage(msg);  //发送短信并返回结果


        } catch (Exception e) {  


            logger.error("send error:", e);  


        }  


        return false;  


    }  


  


//服务是否已经启动


    private boolean isStarted() {  


        if (smsService.getServiceStatus() == Service.ServiceStatus.STARTED) {  //服务的状态是否是启动


            for (AGateway gateway : smsService.getGateways()) {  


                if (gateway.getStatus() == AGateway.GatewayStatuses.STARTED) {  


                    return true;  


                }  


            }  


        }  


        return false;  


    }  


  


    /** 


     * read SMS 去读接收到的短信信息


     * @return List 


     */  


    public List<InboundMessage> readSMS() {  


        List<InboundMessage> msgList = new LinkedList<InboundMessage>();  


        if (!isStarted()) {  


            return msgList;  


        }  


        try {  


            this.smsService.readMessages(msgList,  


                    InboundMessage.MessageClasses.ALL);  


            logger.info("read SMS size: " + msgList.size());  


        } catch (Exception e) {  


            logger.error("read error:", e);  


        }  


        return msgList;  


    }  


  


    /** 


     * @param args 测试类


     */  


    public static void main(String[] args) {  


        Logger.getRootLogger().setLevel(Level.INFO);  


        OutboundMessage outMsg = new OutboundMessage("1xxxxxxxxx7", "这是信息测试");  //绑定接收电话号码和发送的消息


        SendSmsHandler smsHandler = new SendSmsHandler();  


        smsHandler.start();  //启动


        //发送短信  


        smsHandler.sendSMS(outMsg);  


        //读取短信  


        List<InboundMessage> readList = smsHandler.readSMS();  


        for (InboundMessage in : readList) {  


            System.out.println("发信人:" + in.getOriginator() + " 短信内容:"  


                    + in.getText());  


        }  


        smsHandler.destroy();  //停止服务


        System.out.println("-----------");  


    }  


  


}




求大神解救啊!在线等。。。可怜

0 0