2013-10-15 12 views
1

我只是想用java發送短信,因爲我需要它在我的網站App.But用於測試目的,我認爲在這個site 描述,代碼如下所示無法用java

代碼發送短信
package logic; 

import com.harshadura.gsm.smsdura.GsmModem; 

/** 
* @author  : Harsha Siriwardena <[email protected]> 
* @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

您是否將其作爲webapp或獨立應用運行? –

+0

您的調制解調器是否正確,根據此配置? –

+0

Java通信庫現在是一種非常流行的類型。使用RxTx –

回答

2

基本上你親克無法找到PORT,請使用

org.smslib.helper.CommPortIdentifier 

從端口列表中找到正確的COM端口。

+0

感謝您試圖幫助+1,但它不工作,我得到相同的錯誤 – SpringLearner

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不是唯一一家提供此服務的公司。他們是我唯一一個親身體驗過的人。

+0

感謝您的幫助,所以+1,但我的主要目標是在web應用程序中使用。就是它(您提供的鏈接)去幫助在網絡應用程序 – SpringLearner

+0

而不是USB調制解調器我可以使用WiFi熱點發送短信 – SpringLearner

+0

@javaBeginner我建議你抵消發送短信到外部提供商。你需要的唯一東西就是你的web應用程序能夠訪問web。 – Frankie

0

複製API(comm.jar),DLL(win32com),性質

1)文件(javax.comm)如果淨豆類工具,你正在使用的手段

C:\ PROGRAM文件\的Java \ jdk1.7.0 \ JRE \ lib中\分機

C:\ Program Files文件\的Java \ jdk1.7。0 \ JRE \ BIN

2)如果Eclipse的工具,您使用的手段

C:\ Program Files文件\的Java \ jre7 \ LIB \分機

C:\ Program Files \ Java \ jre7 \ bin

根據您在代碼projects.com中給出的說明下載了該項目。

另一種方式如果你可以配置你的工具然後做,邏輯API應該在你的運行時JVM(jre)下。 ,並確保您給出的端口應該是免費的,而不是其他應用程序應該運行的端口。