⑴ org.smslib.GatewayException: Comm library exception: java.lang.reflect.InvocationTargetException
好久沒有弄了,換工作了資料也都丟失了。。。,你報的這個異常可能是jar包和配置文件不全或者找不到路徑所致。
⑵ linux下java開發簡訊系統,發送信息到手機顯示亂碼
首先懷疑字元集的問題。
另外可以把代碼放到windows環境下運行一下,以排除是不是操作系統造成的影響。
我曾經用SMSLib這個java庫開發過一個簡訊貓的程序,字元集是utf8的,windows伺服器上運行沒問題。
⑶ 使用java如何開發一款向手機定時發送簡訊的程序
需要一個發簡訊的設備,比如簡訊貓。去網上找一下,有很多。簡訊貓的賣家可以給你提供java編程介面,但一般都是要收費。如果你不想額外花錢買java介面,你可以去搜一個叫做SMSLib的開源庫。然後利用這個開源庫或者賣家給你的介面來開發你的java程序。
⑷ 如何用Java實現簡訊自動發送功能
Java實現簡訊自動發送功能主要是用httpclient實現的,要有發簡訊的埠。
1、硬體設備是一個3G網卡;
2、軟體方面需要sun提過的java底層通信common包;
3、此外還需要第三方庫SMSLib,這個是開源項目,主要用於實現java發簡訊的功能;
主要代碼如下:
HttpClientclient=newHttpClient();
PostMethodpost=newPostMethod(
"http://cf.lmobile.cn/submitdata/service.asmx/g_Submit");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=utf-8");//在頭文件中設置轉碼
NameValuePair[]data={newNameValuePair("sname","*****"),
newNameValuePair("spwd","*****"),
newNameValuePair("scorpid","*****"),
newNameValuePair("sprdid","*****"),
newNameValuePair("sdst","*****"),
newNameValuePair("smsg","*****")};
post.setRequestBody(data);
client.executeMethod(post);
Header[]headers=post.getResponseHeaders();
intstatusCode=post.getStatusCode();
System.out.println("statusCode:"+statusCode);
for(Headerh:headers){
System.out.println(h.toString());
}
Stringresult=newString(post.getResponseBodyAsString().getBytes("utf-8"));
System.out.println(result);
post.releaseConnection();
⑸ java開發 實現發送簡訊的功能,報錯信息 javax.comm.NoSuchPortException 哪位高手幫我解決解決。謝謝!急
埠號錯誤,換一個埠號
⑹ 如何使用smslib中的回調函數
avaComm只支持32位的windows,我們是windows server 2008 64位版本,只能選擇RxTx來與串口通信。最終依賴jar包有4個:
windows和串口通訊還需要依賴操作系統的功能,所以 RxTx還需要將rxtxParallel.dll 和 rxtxSerial.dll 放到jdk目錄中,官方的安裝說明非常詳細了。
rxtxSerial.dll ---> <JAVA_HOME>\jre\bin
rxtxParallel.dll ---> <JAVA_HOME>\jre\bin
RXTXcomm.jar只要放到classpath下就行,不用非得放到jre\lib\ext下面
接下來就可以寫代碼了,代碼其實也不復雜:
package com.piaohan.sms;
import org.smslib.Message.MessageEncodings;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;
public class SMSDemo {
public static void main(String args[]) throws Exception {
// ---------------創建串口設備,如果有多個,就創建多個--------------
// 1、你自己連接網關的id
// 2、com口名稱,如COM1或/dev/ttyS1(根據實際情況修改)
// 3、串口波特率,如9600(根據實際情況修改)
// 4、開發商,如Apple
// 5、型號,如iphone4s
SerialModemGat www.hbbz08.com eway gateway = new SerialModemGateway("SMS" , "COM3",
9600, "", "");
gateway.setInbound( true); // 設置true,表示該網關可以接收簡訊
gateway.setOutbound( true); // 設置true,表示該網關可以發送簡訊
// -----------------創建發送簡訊的服務(它是單例的)----------------
Service service = Service. getInstance();
// ---------------------- 將設備加到服務中----------------------
service.addGateway(gateway);
// ------------------------- 啟動服務 -------------------------
service.startService();
// " , "Hello World);
msg.setEncoding(MessageEncodings. ENCUCS2);"
service.sendMessage(msg);
// ------------------------- 關閉服務 -------------------------
service.stopService();
}
}
⑺ 如何用java的web程序實現簡訊業務
看你要如何實現了,簡單的使用GSM貓,這個需要通過串口向貓發送命令,然後由貓來負責發送和接收簡訊。
另外可以直接向移動申請簡訊服務,通過他們提供的簡訊介面(CMPP3.0)發送和接收簡訊,大型的簡訊應用都是通過這種方式。不過這種方式,如果你的簡訊量達不到一定數量,是不會給你開通的。那樣,你可能需要自己去找其它服務商代理了。
我以前做過一個項目,就是應為簡訊量不夠,沒有開通簡訊網關服務,沒有辦法用貓的形式做的。
不過,不要向我要代碼,涉及到保密。當然代碼很簡單,就是熟悉你選用的貓的串口協議,然後利用樓上提到的java通信API通過串口發送和接收數據就可以了。
補充回答:
需要Sun的通信API http://java.sun.com/procts/javacomm/
如果你需要,可以留下mail,我可以發給你。
⑻ SMSLib配置好環境變數,檢測運行出現問題!
路徑上存在問題,你再檢查一下吧
⑼ 如何用Java實現簡訊自動發送功能
方法一:
1.web.xml中配置listener
<listener>
<listener-class>
cn.com.jxlife.shs.web.action.csinquiry.surrender.MyListener
</listener-class>
</listener>
2.創建listener
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener {
private Timer timer = null;
@Override
public void contextInitialized(ServletContextEvent sce) {
timer = new Timer(true);
//設置任務計劃,啟動和間隔時間
timer.schele(new MyTask(), 0, 3*60*1000);
//3分鍾
//timer.schele(new MyTask(), 0, 3*60*1000);
//在1秒後執行此任務,每次間隔2秒
//timer.schele(new MyTask(), 1000, 2000);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
timer.cancel();
}
}
3.創建啟動的類MyTask
import java.util.Date;
import java.util.TimerTask;
public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("call at " + (new Date()));
}
}
方法二:
spring 下實現定時工作的調度框架quartz
· 1。從http://quartz-scheler.org/下載quartz的開源包
quartz-1.7.3.tar.gz
3.07M
· 2。從quartz-1.7.3.tar.gz 找到quartz-1.7.3.jar,放到項目的classpath下
(放到webroot/WEB-INF/lib)下
· 3。定義一個需要時間調度的程序
package com.machome.quartz;
public class CustomJob1 {
public void onTimeWork() {
System.out.println("數據備份任務啟動");
System.out.println("...");
System.out.println("數據備份任務完成");
}
}
· 4。剩餘的工作就都在spring xml文件里完成了
<!-- 被調度的bean -->
<bean id="job1" class="com.machome.quartz.CustomJob1"></bean>
<!-- 定義任務對象 -->
<bean id="jobtask1"
class="org.springframework.scheling.quartz.">
<!-- 被調度的bean -->
<property name="targetObject">
<ref bean="job1" />
</property>
<!-- 被調度的bean中的被調度的方法 -->
<property name="targetMethod">
<value>onTimeWork</value>
</property>
</bean>
<!-- 定義觸發對象 -->
<bean id="trigger1"
class="org.springframework.scheling.quartz.CronTriggerBean">
<!-- 任務對象 -->
<property name="jobDetail">
<ref bean="jobtask1" />
</property>
<!-- cron表達式 -->
<property name="cronExpression">
<value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
</property>
</bean>
<!-- 調度對象 -->
<!-- 如果將lazy-init='false'那麼容器啟動就會執行調度程序 -->
<bean id="scheler" lazy-init="false"
class="org.springframework.scheling.quartz.SchelerFactoryBean">
<!-- 觸發對象 -->
<property name="triggers">
<list>
<ref bean="trigger1" />
</list>
</property>
</bean>
· 5。 將spring 項目部署到TOMCAT或JBOSS伺服器上
deploy項目
重啟TOMCAT server
· 6。看結果:
cron表達式參考:Quartz的cron表達式
⑽ org.smslib.GatewayException: Comm library exception: java.lang.reflect.InvocationTargetException
我今天也碰到這個異常,是因為我在用java代碼測試發送簡訊之前,打開了超級終端(發送AT指令的)測試發送簡訊,用超級終端測了後忘記斷開連接及關閉超級終端,這樣超級終端會一直佔用這個COM口,所以會出現上述異常,斷開超級終端的連接後再用Java代碼發送就沒這個異常了。