Java實現短信自動發送功能主要是用httpclient實現的,要有發短信的端口。
1、硬件設備是一個3G網卡;
2、軟件方麵需要sun提過的java底層通信common包;
3、此外還需要第三方庫SMSLib,這個是開源e5a48de588b662616964757a686964616f31333337396231項目,主要用於實現java發短信的功能;
主要代碼如下:
???????要導入三個包commons_codec,httpclient,logging
??????HttpClient?client?=?new?HttpClient();
PostMethod?post?=?new?PostMethod(
"http://cf.lmobile.cn/submitdata/service.asmx/g_Submit");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=utf-8");//?在頭文件中設置轉碼
NameValuePair[]?data?=?{?new?NameValuePair("sname",?"*****"),
new?NameValuePair("spwd",?"*****"),
new?NameValuePair("scorpid",?"*****"),
new?NameValuePair("sprdid",?"*****"),
new?NameValuePair("sdst",?"*****"),
new?NameValuePair("smsg",?"*****")?};
post.setRequestBody(data);
client.executeMethod(post);
Header[]?headers?=?post.getResponseHeaders();
int?statusCode?=?post.getStatusCode();
System.out.println("statusCode:"?+?statusCode);
for?(Header?h?:?headers)?{
System.out.println(h.toString());
}
String?result?=?new?String(post.getResponseBodyAsString().getBytes(
"utf-8"));
System.out.println(result);
post.releaseConnection();
方法一:
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.schedule(new MyTask(), 0, 3*60*1000);
//3分鍾
//timer.schedule(new MyTask(), 0, 3*60*1000);
//在1秒後執行此任務,每次間隔2秒
//timer.schedule(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-scheduler.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。定義一個需要時間調度的e68a8462616964757a686964616f31333335316463程序
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.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 被調度的bean -->
<property name="targetObject">
<ref bean="job1" />
</property>
<!-- 被調度的bean中的被調度的方法 -->
<property name="targetMethod">
<value>onTimeWork</value>
</property>
</bean>
<!-- 定義觸發對象 -->
<bean id="trigger1"
class="org.springframework.scheduling.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="scheduler" lazy-init="false"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 觸發對象 -->
<property name="triggers">
<list>
<ref bean="trigger1" />
</list>
</property>
</bean>
· 5。 將spring 項目部署到TOMCAT或JBOSS服務器上
deploy項目
重啟TOMCAT server
· 6。看結果:
cron表達式參考:Quartz的cron表達式
百度搜索quartz 很多定時實例,自己去寫才能學到東西
1.通過移動或聯通短信網關發送短信,這需要通信服務商給你開通短信端口,發送短信協議各個服務商都不一樣,比如移動的是cmpp2,cmpp3等
2.第二種是通過硬件設備發送短信,這個需要你有專門的硬件設備,比如一個上網卡或者一個手機模塊,通過調用com遵從一些協議發送短信
單純靠寫代碼是無法發短信的,至少要有一個webservice接口或者硬件接口。
分兩種情況:
1、你要搞網站手機號注冊,要用戶輸入自己的手機號給他們發驗證碼。
2、你隻是需要提醒自己或者給特定的已知號碼用戶發短信,比如程序跑完成了通知一下自己或者跑這個程序的客戶。
是哪種?
用戶登錄
還沒有賬號?立即注冊
用戶注冊
投稿取消
文章分類: |
|
還能輸入300字
上傳中....