java批量發送簡訊
Ⅰ 用java調用簡訊介面給手機發送簡訊怎麼寫代碼介面已經有了,是一個url.
那你要做的就是向這個URL發送數據就好,給個例子:
publicclassHttptest1{
8
9publicstaticvoidmain(String[]args){
10
11URLurl=null;
12HttpURLConnectionconn=null;
13OutputStreamoutStream=null;
14InputStreaminStream=null;
15
16try{
17url=newURL("http://219.233.89.7:8090/cgi-bin/mailinterface");
18conn=(HttpURLConnection)url.openConnection();
19conn.setDoOutput(true);
20conn.setDoInput(true);
21
22StringsendXml="<?xmlversion="1.0"encoding="UTF-16"?><!DOCTYPESigMailCommandSYSTEM"SigMail.dtd">";//XML數據
23sendXml+="<SigMailCommandName="checkuser"><ParamName="domainname">test.com.cn</Param>";
24sendXml+="<ParamName="username">admin</Param></SigMailCommand>";
25
26outStream=conn.getOutputStream();
27
28//准備通過CONN對象寫入XML數據
29BufferedWriterbw=newBufferedWriter(newjava.io.OutputStreamWriter(outStream,
30"UTF-16"));
31bw.write(sendXml);
32bw.flush();
33bw.close();
34
35//DataOutputStreamdataOutStream=newDataOutputStream(outStream);
36//dataOutStream.writeChars(xml);
37//dataOutStream.flush();
38//dataOutStream.close();
39
40
41//准備通過CONN對象讀取返回的XML數據
42
43inStream=conn.getInputStream();
44StringBufferreturnXml=newStringBuffer("");
45BufferedReaderrd=newBufferedReader(newInputStreamReader(inStream,
46"UTF-16"));
47for(Stringline=null;(line=rd.readLine())!=null;){
48returnXml.append(line);
49}
50System.out.println(returnXml.toString());
51rd.close();
52}catch(IOExceptionex){
53ex.printStackTrace();
54}finally{
55try{
56if(outStream!=null)
57outStream.close();
58if(inStream!=null)
59inStream.close();
60if(conn!=null)
61conn.disconnect();
62}catch(IOExceptione){
63//TODO自動生成catch塊
64e.printStackTrace();
65}
66}
67
68}
69
70}
Ⅱ java簡訊驗證碼要注意什麼問題
1、時間間隔
java簡訊驗證碼並不是你請求幾次都可以的。一般來講在同一個時刻同一部手機發送的同一個請求,一般次數上不會超過三次,時間間隔上會有一分鍾的限定,這是為了避免有些用戶頻繁無效的胡亂點擊或惡意搗亂,影響正常的系統工作,讓有需求的朋友無法正常完成驗證。
2、次數限制
如果遇到有些用戶總是大量的向後台發送請求,次數過多,頻率過大,同一個手機號一天的時間里,超過了一定次數的請求數,那麼該手機號會被認定為一個危險號,有可能會被系統列入黑名單之中,使得下次將無法實現請求驗證。
3、錯誤限定
當用戶對於同個類型的需求進行不斷的驗證,比如說更改密碼、注冊時發送的java簡訊驗證碼,在輸入時的錯誤次數也是有限制的。因為正常、規范的簡訊驗證碼的發送只用很短時間用戶就可以准確接收到,但如果用戶總是不能正確輸入,次數超過了三次的話,就會讓其驗證碼無效,避免有人惡意嘗試輸入,確保用戶的賬戶安全。
簡訊驗證碼在我們日常生活中扮演了及其重要的地位,是保障我們現在互聯網信息的主流安全手段,因此在開發java簡訊驗證碼以及後期的維護中,都不可忽略其安全性。java簡訊驗證碼接入廣東第五大道還可以,提供簡訊驗證碼測試。
Ⅲ 如何用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表達式
Ⅳ java 非同步發送簡訊,非同步怎麼實現
java 非同步發送簡訊,非同步實現:
1,使用spring框架的非同步註解 @Async ,底層應該是一個線程。
2,簡單粗暴的方式:開一個線程
new Thread(new Runnable() {
public void run() {
//發送簡訊
}
}).start();
當然也可以高級一點,使用線程池。
3,更高端一點:使用消息隊列MQ
Ⅳ java怎麼實現群發簡訊的功能
JAVA實現簡訊群發的步驟:
1、使用第三方簡訊平台服務商,接入簡訊服務;
2、調用簡訊提交頁面發送請求;
3、伺服器向第三方簡訊平台提交發送請求;
4、簡訊平台通過運營商將簡訊下發至用戶的手機上。
以下是秒賽簡訊平台JAVA簡訊驗證碼介面代碼示例
package test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.lang3.StringUtils;
public class Apis {
// 簡訊發送介面的http地址,請咨詢客服
private static String url = 「xxxxxxxxxxxxxxxxxxxxxxxxxxxx」;
// 編碼格式。發送編碼格式統一用UTF-8
private static String ENCODING = 「UTF-8」;
public static void main(String[] args) throws IOException, URISyntaxException {
// 賬號
String account = 「************************」;
// 密碼
String pswd = 「************************」;
// 修改為您要發送的手機號,多個用,分割
String mobile = 「13*********」;
// 設置您要發送的內容
String msg = 「【秒賽科技】您的驗證碼是:1234」;
// 發簡訊調用示例
System.out.println(Apis.send(account,pswd, mobile, msg));
}
/**
* 發送簡訊
*
* @param account
* account
* @param pswd
* pswd
* @param mobile
* 手機號碼
* @param content
* 簡訊發送內容
*/
public static String send(String account,String pswd, String mobile, String msg) {
NameValuePair[] data = { new NameValuePair(「account」, account),
new NameValuePair(「pswd」, pswd),
new NameValuePair(「mobile」, mobile),
new NameValuePair(「msg」, msg),
new NameValuePair(「needstatus」, 「true」),
new NameValuePair(「proct」, 「」) };
return doPost(url, data);
}
/**
* 基於HttpClient的post函數
* PH
* @param url
* 提交的URL
*
* @param data
* 提交NameValuePair參數
* @return 提交響應
*/
private static String doPost(String url, NameValuePair[] data) {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
// method.setRequestHeader(「ContentType」,
// 「application/x-www-form-urlencoded;charset=UTF-8」);
method.setRequestBody(data);
// client.getParams()。setContentCharset(「UTF-8」);
client.getParams()。setConnectionManagerTimeout(10000);
try {
client.executeMethod(method);
return method.getResponseBodyAsString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}