我只是尝试使用java发送短信,因为我在我的Web App中需要它。但是出于测试目的,我是这个site中描述的代码 代码如下
package logic;
import com.harshadura.gsm.smsdura.GsmModem;
/**
* @author : Harsha Siriwardena <harshadura@gmail.com>
* @copyrights : www.Durapix.org <http://www.durapix.org>
* @license : GNU GPL v3 <http://www.gnu.org/licenses/>
*
* Example on how to simply send a SMS using the smsdura API Wrapper.
*/
public class TestSMS {
private static String port = "COM3"; //Modem Port.
private static int bitRate = 115200; //this is also optional. leave as it is.
private static String modemName = "ZTE"; //this is optional.
private static String modemPin = "0000"; //Pin code if any have assigned to the modem.
private static String SMSC = "+9477000003"; //Message Center Number ex. Mobitel
public static void main(String[] args) throws Exception {
GsmModem gsmModem = new GsmModem();
GsmModem.configModem(port, bitRate, modemName, modemPin, SMSC);
gsmModem.Sender("+94712244555", "Test Message"); // (tp, msg)
}
}
当我尝试运行此操作时,我收到此错误
-----------------------------
*** SMS-DURA - GSM MODEM SMS API WRAPPER ***
www.harshadura.com
-----------------------------
Example: Send message from a serial gsm modem.
SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
Version: 3.5.1
log4j:WARN No appenders could be found for logger (smslib).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:102)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
at org.smslib.Service$1Starter.run(Service.java:276)
请有人告诉我如何解决这个问题
答案 0 :(得分:2)
基本上你的程序无法找到PORT,请使用
org.smslib.helper.CommPortIdentifier
从端口列表中找到正确的COM端口。
答案 1 :(得分:1)
我知道这不是你期望的那种答案,但考虑到替代方案,我认为它总比没有好。
a)您的图书馆报告未附加您的调制解调器 b)您不知道如何检查您的调制解调器是否已连接。
虽然与公司没有任何关系,但我过去曾使用nexmo取得了巨大的成功。
如果您的应用是必需的我强烈建议您通过API路线解决问题,这将为您节省大量工作。
有几家公司提供此服务,而且使用或多或少是直接的,您只需格式化URL以将参数传递回公司。 Nexmo示例:
// by calling a crafted url you are requesting the company to send the sms for you
urlString = "https://rest.nexmo.com/sms/json?api_key={api_key}&api_secret={api_secret}&from=MyCompany20&to=447525856424&text=helloworld";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream()
Nexmo不是唯一提供此服务的人。他们是我唯一亲身体验过的人。
答案 2 :(得分:0)
复制API(comm.jar),dll(win32com),属性文件(javax.comm)
1)如果您正在使用的Net Beans工具意味着
C:\ Program Files \ Java \ jdk1.7.0 \ jre \ lib \ ext
和
C:\ Program Files \ Java \ jdk1.7.0 \ jre \ bin
2)如果您使用的Eclipse工具意味着
C:\ Program Files \ Java \ jre7 \ lib \ ext
和
C:\ Program Files \ Java \ jre7 \ bin
根据您下载此项目的Code projects.com中的说明。
另一种方法如果您可以配置您的工具然后执行它,逻辑是API应该在您的运行时JVM(jre)下。 并确保您提供的端口应该是免费的,不应该在其上运行其他应用程序。
答案 3 :(得分:0)
是的,我在Harshadura的SMS包装器中也遇到了例外,它们可能是您没有做的两件事
您没有在代码中声明任何追加程序,因此在 您的代码只需输入以下简单代码即可声明追加程序。
package logic;
import com.harshadura.gsm.smsdura.GsmModem;
/**
* @author : Harsha Siriwardena <harshadura@gmail.com>
* @copyrights : www.Durapix.org <http://www.durapix.org>
* @license : GNU GPL v3 <http://www.gnu.org/licenses/>
*
* Example on how to simply send a SMS using the smsdura API Wrapper.
*/
public class TestSMS {
private static String port = "COM3"; //Modem Port.
private static int bitRate = 115200; //this is also optional. leave as it is.
private static String modemName = "ZTE"; //this is optional.
private static String modemPin = "0000"; //Pin code if any have assigned to the modem.
private static String SMSC = "+9477000003"; //Message Center Number ex. Mobitel
public static void main(String[] args) throws Exception {
BasicConfigurator.configure();//Declares appenders
GsmModem gsmModem = new GsmModem();
GsmModem.configModem(port, bitRate, modemName, modemPin, SMSC);
gsmModem.Sender("+94712244555", "Test Message"); // (tp, msg)
} }
标识您的GSM调制解调器的端口。您可以通过以下方法解决此问题:转到“我的电脑”图标,依次单击管理>设备管理器>调制解调器,然后识别调制解调器的端口。
您确定的端口,然后将其写入代码中。String port="MyPort"
;