Java實現(xiàn)短信自動發(fā)送功能主要是用httpclient實現(xiàn)的,要有發(fā)短信的端口。
呼和浩特網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
1、硬件設(shè)備是一個3G網(wǎng)卡;
2、軟件方面需要sun提過的java底層通信common包;
3、此外還需要第三方庫SMSLib,這個是開源項目,主要用于實現(xiàn)java發(fā)短信的功能;
主要代碼如下:
HttpClient?client?=?new?HttpClient();
PostMethod?post?=?new?PostMethod(
"");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=utf-8");//?在頭文件中設(shè)置轉(zhuǎn)碼
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();
Java源程序(.java文件)——java字節(jié)碼文件(.class文件)——由解釋執(zhí)行器(java.exe)將字節(jié)碼文件加載到j(luò)ava虛擬機(jī)(jvm)——字節(jié)碼文件(.class)就會在java虛擬機(jī)中執(zhí)行。
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程? ?。
Java具有簡單性、面向?qū)ο?、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點? 。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等
package?com.winhands.quartz;
import?java.io.PrintWriter;
import?java.io.StringWriter;
import?java.io.UnsupportedEncodingException;
import?java.util.ArrayList;
import?java.util.Date;
import?java.util.HashMap;
import?java.util.List;
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?com.winhands.base.service.BaseService;
import?com.winhands.util.BaseConstant;
import?com.winhands.web.dict.entity.DictCommon;
import?com.winhands.web.xfhf.entity.SmsOutBox;
import?com.winhands.web.xfhf.entity.SmsVisit;
import?com.winhands.web.xfhf.entity.TaskInfo;
public?class?SmsSendSync?{
public?BaseService?baseService;
public?BaseService?baseServiceMas;
public?static?final?Logger?logger?=?LoggerFactory.getLogger(SmsSendSync.class);
//同步短信到mas機(jī)待發(fā)短信表
public?void?work()?{
//?任務(wù)ID?100001
//?首先查詢?nèi)蝿?wù)是否正在執(zhí)行
//?查詢列表
TaskInfo?taskInfo?=?new?TaskInfo();
taskInfo.setTask_id("100001");
try?{
taskInfo?=?(TaskInfo)?baseService.queryForObject("sms_send.queryTaskStatus",?taskInfo);
//如果狀態(tài)是處室狀態(tài)則執(zhí)行,否則此次任務(wù)不執(zhí)行
if?(BaseConstant.task_status_cs.equals(taskInfo.getTask_status()))?{
taskInfo.setTask_status(BaseConstant.task_status_zx);//設(shè)置任務(wù)執(zhí)行狀態(tài)為執(zhí)行
taskInfo.setTask_last_start_time(new?Date());//設(shè)置任務(wù)執(zhí)行開始時間
baseService.update("sms_send.updateTaskStatus",?taskInfo);//
//移動號碼庫
HashMapString,String?hashMap?=?new?HashMapString,String();
//134?、135、136、137、138、139、150、151、152、158、159、182、183、184。157、187、188
hashMap.put("134",?"134");
hashMap.put("135",?"135");
hashMap.put("136",?"136");
hashMap.put("137",?"137");
hashMap.put("138",?"138");
hashMap.put("139",?"139");
hashMap.put("150",?"150");
hashMap.put("151",?"151");
hashMap.put("152",?"152");
hashMap.put("157",?"157");
hashMap.put("158",?"158");
hashMap.put("159",?"159");
hashMap.put("182",?"182");
hashMap.put("183",?"183");
hashMap.put("184",?"184");
hashMap.put("187",?"187");
hashMap.put("188",?"188");
SmsVisit?smsSend?=?new?SmsVisit();
smsSend.setSms_status(BaseConstant.sms_status_csh);
List?list?=?baseService.queryForList("sms_send.queryForSmsTask",?smsSend);
List?smsMasList?=?new?ArrayList();
List?smsList?=?new?ArrayList();
if?(list?==?null||list.size()==0)?return;//?如果列表為空,沒有待辦任務(wù),則任務(wù)結(jié)束
for?(int?i?=?0;?i??list.size();?i++)?{
smsSend?=?(SmsVisit)?list.get(i);
//String?msg?=?messagecontent(smsSend);
String?msg?=?smsSend.getSpare_2();
if(hashMap.get(smsSend.getVisit_phone().substring(0,?3))!=null){
SmsOutBox?smsOutBox?=?new?SmsOutBox();
smsOutBox.setSismsid(smsSend.getP_id());
smsOutBox.setReqdeliveryreport(BaseConstant.NoReport);
smsOutBox.setApplicationid(BaseConstant.APPLICATIONID);
smsOutBox.setDestaddr(smsSend.getVisit_phone());
smsOutBox.setMsgfmt(BaseConstant.MSGFMT);
smsOutBox.setRequesttime(new?Date());
smsOutBox.setExtcode(smsSend.getExtccode());
smsOutBox.setSendmethod(BaseConstant.NoMsg);//?正常短信
smsOutBox.setMessagecontent(msg);
smsMasList.add(smsOutBox);
}else{
boolean?con?=?true;
String?lastMsg?=?msg;
int?xh?=0;
while(con){
lastMsg?=?msg.substring(0,msg.length()??55???55?:?msg.length());
msg?=?msg.substring(msg.length()??55???55?:?msg.length(),msg.length());
if?(msg.equals(""))?{
con?=?false;
}
SmsOutBox?smsOutBox?=?new?SmsOutBox();
smsOutBox.setSismsid(smsSend.getP_id()+(xh==0?"":xh));
xh++;
smsOutBox.setReqdeliveryreport(BaseConstant.NoReport);
smsOutBox.setApplicationid(BaseConstant.APPLICATIONID);
smsOutBox.setDestaddr(smsSend.getVisit_phone());
smsOutBox.setMsgfmt(BaseConstant.MSGFMT);
smsOutBox.setRequesttime(new?Date());
smsOutBox.setExtcode(smsSend.getExtccode());
smsOutBox.setSendmethod(BaseConstant.NoMsg);//?正常短信
smsOutBox.setMessagecontent(lastMsg);
smsMasList.add(smsOutBox);
}
}
SmsVisit?smsSendTemp?=?new?SmsVisit();
smsSendTemp.setP_id(smsSend.getP_id());?
//smsSendTemp.setSpare_2(msg);//短信內(nèi)容
smsSendTemp.setSms_status_time(new?Date());
smsSendTemp.setSms_status(BaseConstant.sms_status_yfswg);?
smsList.add(smsSendTemp);
}
baseService.insertBatch("sms_send.insertSmsOutBox",?smsMasList);//插入本地歷史記錄表
baseServiceMas.insertBatch("sms_mas.insertSmsOutBox",?smsMasList);//插入mas機(jī)待發(fā)送表
baseService.updateBatch("sms_send.updateSmsVisit",?smsList);//更新回訪記錄狀態(tài)
}
}?catch?(Exception?e)?{
e.printStackTrace();
//baseService.saveLog("同步短信到mas機(jī)待發(fā)短信表",?"100001",?"同步短信到mas機(jī)待發(fā)短信表錯誤");
logger.error("同步短信到mas機(jī)待發(fā)短信表錯誤",?getTrace(e));
}finally{
try?{
taskInfo.setTask_status(BaseConstant.task_status_cs);//設(shè)置任務(wù)執(zhí)行狀態(tài)為初始
taskInfo.setTask_last_end_time(new?Date());//設(shè)置任務(wù)執(zhí)行結(jié)束時間
taskInfo.setTask_status_desc("任務(wù)執(zhí)行結(jié)束");
baseService.update("sms_send.updateTaskStatus",?taskInfo);//
}?catch?(Exception?e2)?{
e2.printStackTrace();
//?TODO:?handle?exception
}
}
}
public?String?messagecontent(SmsVisit?smsSend){
//XX,您好!您于XX月XX日辦理XX業(yè)務(wù)(或XX,您好!XX大隊于XX月XX日對你單位進(jìn)行監(jiān)督檢查/行政處罰/火災(zāi)調(diào)查),現(xiàn)進(jìn)行滿意度回訪,請回復(fù)數(shù)字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!回復(fù)免費。宿遷市公安消防支隊
//首先根據(jù)業(yè)務(wù)類型來判斷采用哪種模板?監(jiān)察
StringBuffer?msg?=?new?StringBuffer("");?
if(BaseConstant.jiancha.equals(smsSend.getVisit_deal_business_type())){
msg.append(smsSend.getVisit_name_cn())
???.append(",您好!")
???.append(smsSend.getVisit_deal_org_name())
???.append("于")
???.append(smsSend.getVisit_deal_time().substring(4,?6)).append("月")
???.append(smsSend.getVisit_deal_time().substring(6,?8)).append("日")
???.append("對你單位進(jìn)行").append(DictCommon.getEntryMap(BaseConstant.jiancha).get(smsSend.getVisit_deal_business()))
???.append(",現(xiàn)進(jìn)行滿意度回訪,請回復(fù)數(shù)字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!");
}else?if(BaseConstant.yewu.equals(smsSend.getVisit_deal_business_type())){
msg.append(smsSend.getVisit_name_cn())
???.append(",您好!您于")
???.append(smsSend.getVisit_deal_time().substring(4,?6)).append("月")
???.append(smsSend.getVisit_deal_time().substring(6,?8)).append("日")
???.append("辦理").append(smsSend.getVisit_deal_business()).append("業(yè)務(wù),")
???.append("現(xiàn)進(jìn)行滿意度回訪,請回復(fù)數(shù)字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!");
}
return?msg.toString();
}
public?BaseService?getBaseService()?{
return?baseService;
}
public?void?setBaseService(BaseService?baseService)?{
this.baseService?=?baseService;
}
public?BaseService?getBaseServiceMas()?{
return?baseServiceMas;
}
public?void?setBaseServiceMas(BaseService?baseServiceMas)?{
this.baseServiceMas?=?baseServiceMas;
}
public?static?void?main(String[]?args){
List?smsMasList?=?new?ArrayList();?
try?{
String?msg?=?"***,您好!*********于2015年5月2日對你單位進(jìn)行監(jiān)督檢查,現(xiàn)進(jìn)行滿意度回訪,請回復(fù)數(shù)字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!";
SmsOutBox?smsOutBox?=?new?SmsOutBox();
smsOutBox.setSismsid("12344");
smsOutBox.setReqdeliveryreport(BaseConstant.NoReport);
smsOutBox.setApplicationid(BaseConstant.APPLICATIONID);
smsOutBox.setDestaddr("111");
smsOutBox.setMsgfmt(BaseConstant.MSGFMT);
smsOutBox.setRequesttime(new?Date());
smsOutBox.setExtcode("2222");
smsOutBox.setSendmethod(BaseConstant.NoMsg);//?正常短信
boolean?con?=?true;
String?lastMsg?=?msg;
while(con){
lastMsg?=?msg.substring(0,msg.length()??55???55?:?msg.length());
msg?=?msg.substring(msg.length()??55???55?:?msg.length(),msg.length());
if?(msg.equals(""))?{
con?=?false;
}
SmsOutBox?smOutBox_temp?=?new?SmsOutBox();?
smOutBox_temp?=?smsOutBox;
smOutBox_temp.setMessagecontent(lastMsg);
?
smsMasList.add(smOutBox_temp);
}
for(Object?o:smsMasList){
SmsOutBox?smsOutBox2?=?(SmsOutBox)o;
System.out.println(smsOutBox2.getMessagecontent());
}
}?catch?(Exception?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
public?static?String?getTrace(Throwable?t)?{
StringWriter?stringWriter=?new?StringWriter();
PrintWriter?writer=?new?PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer?buffer=?stringWriter.getBuffer();
return?buffer.toString();
}
}
短信不是你想發(fā)??想發(fā)就能發(fā),是收費的,我們公司是租用的移動MAS平臺的短信發(fā)送接收平臺,上面那是和一個和mas同步的一個小程序,租用別人的mas平臺是收費的,平臺有很多自己選擇,有發(fā)送接口可以調(diào),發(fā)送內(nèi)容自己提供
圖形界面效果圖
參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//窗口繼承JFrame,?實現(xiàn)了ActionListener接口
public?class?MsgFrame?extends?JFrame?implements?ActionListener?{
private?JTextField?tf;
private?JTextArea?ta;
private?JButton?jbSend;
private?static?final?String?TIPS="短信內(nèi)容不能為空";
public?MsgFrame()?{
ta?=?new?JTextArea();
ta.setText(TIPS);
ta.setEditable(false);
add(ta);
tf?=?new?JTextField(20);
JLabel?jl?=?new?JLabel("短信編輯");
jbSend?=?new?JButton("發(fā)送");
jbSend.addActionListener(this);
JPanel?jps=new?JPanel();
jps.add(jl);
jps.add(tf);
jps.add(jbSend);
add(jps,BorderLayout.SOUTH);
setSize(386,?280);//大小
setLocationRelativeTo(null);//居中
setTitle("發(fā)送短信窗口");
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public?static?void?main(String[]?args)?{
SwingUtilities.invokeLater(new?Runnable()?{
public?void?run()?{
new?MsgFrame().setVisible(true);//創(chuàng)建窗口并設(shè)置可見
}
});
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
JButton?jb=(JButton)?e.getSource();
if(jbSend==jb){//當(dāng)發(fā)送按鈕被點擊時,進(jìn)行處理
String?text=tf.getText().trim();
if(text.isEmpty()){
JOptionPane.showMessageDialog(this,?TIPS);//如果內(nèi)容為空,那么提示
}else{
ta.append("\r\n"+text);//如果內(nèi)容不為空,那么添加到文本域
tf.setText("");//發(fā)送完成,清空文本框的內(nèi)容
}
}
}
}
package examples;
import java.util.Scanner;
public class Entry {
public static void main(String args []) {
Scanner sc=new Scanner(System.in);
String pno,msg;
System.out.print("請輸入短信內(nèi)容:");
msg=sc.nextLine();
System.out.println("請輸入目標(biāo)手機(jī)號碼:");
pno=sc.nextLine();
ShortMesg newmsg=new ShortMesg();
newmsg.setPhoneNO(pno);
newmsg.setMessage(msg);
SendMesg send=new SendMesg(newmsg);
send.send();
}
}
class ShortMesg {
public ShortMesg() {
}
private String pno,msg;
public void setPhoneNO(String pno) {
this.pno=pno;
}
public String getPhoneNO() {
return this.pno;
}
public void setMessage( String msg) {
this.msg=msg;
}
public String getMessage() {
return this.msg;
}
}
class SendMesg {
private ShortMesg mms;
public SendMesg(ShortMesg mms) {
this.mms=mms;
}
public void send() {
System.out.println("短信內(nèi)容: "+mms.getMessage());
System.out.println("目標(biāo)手機(jī): "+mms.getPhoneNO()+"\n");
}
}
分享文章:手機(jī)短信java代碼 安卓發(fā)送短信代碼
文章位置:http://muchs.cn/article14/hjsgde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、云服務(wù)器、小程序開發(fā)、網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)