『壹』 java發送手機簡訊
你是什麼需求,如果是要用戶注冊發驗證碼這類,只能找簡訊發送的通訊類公司了內;如果你是想給自己發,比容如程序跑完了提醒你看結果,程序遇到異常提醒你處理之類,可以用「喵提醒」這類服務。但是無論如何,天下沒有免費的午餐,發簡訊肯定要費用,除非你是用喵提醒的公眾號文字提醒這類就可以不需要費用。
『貳』 java如何發簡訊
這個原理要講老半天了
我們普通的發短消息,是靠手機發到簡訊中心內,然後由簡訊中容心發到對方手機
通過網頁呢,就是直接把簡訊發到簡訊中心,各地的簡訊中心會提供ip地址和埠號。
這個簡訊的格式就是按照不同的協議來定義的。裡面定義了from ,to ,content,fee,等等
簡單的原理就是這樣
『叄』 java怎麼同步發送及非同步發送簡訊例子解析
發送簡訊的介面
根據自己的情況選擇服務商。
開發文檔
從開發文檔中我們可以看到. 可以直接使用http請求也可以使用WebService請求發送簡訊. 由於DEMO文件夾下的java和jsp文件夾中的代碼都是使用http請求發送簡訊. 所以這里就不再細說了, 我們使用WebService的方式演示發送簡訊.
生成客戶端代碼
從介面文檔中我們知道它的WebService的WSDL的url為:http://106.ihuyi.cn/webservice/sms.php?WSDL那麼我們可以執行下面的命令生成客戶端代碼:
wsimport -keep http://106.ihuyi.cn/webservice/sms.php?WSDL
其中wsimport是JDK自帶的工具, -keep url選項是"保留生成的文件". 該命令會在當前目錄下生成sms.cn.ihuyi._106包, 以及眾多的類. 接下來開始編寫我們自己的代碼.
定義介面
為了方便, 這里我們首先定義一個介面:
Sms.java
publicinterfaceSms{
/**
*向mobile發送簡訊,內容為message
*
*@parammobile手機號
*@parammessage簡訊內容
*@return成功返回-1,否則返回其他值
*/
intsendMessage(Stringmobile,Stringmessage);
}
這個介面很簡單, 只有一個方法. 這個方法用來發送簡訊.
同步發送簡訊
接下來我們首先實現一個同步發送簡訊的類:
IhuyiSmsImpl.java
{
privateStringaccount;
privateStringpassword;
publicvoidsetAccount(Stringaccount){
this.account=account;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@Override
publicintsendMessage(Stringmobile,Stringmessage){
cn.ihuyi._106.Smsfactory=newcn.ihuyi._106.Sms();
SmsSoapsmsSoap=factory.getSmsSoap();
SubmitResultsubmit=smsSoap.submit(account,password,mobile,message);
intcode=submit.getCode();
if(code==2){
return-1;
}
System.out.println("發送簡訊失敗,code:"+code);
returncode;
}
}
非同步發送簡訊
由於發送簡訊涉及到網路通信, 因此sendMessage方法可能會有一些延遲. 為了改善用戶體驗, 我們可以使用非同步發送簡訊的方法. 原理很簡單: 如果用戶請求發送簡訊, 我們不是直接調用IhuyiSmsImpl的sendMessage方法, 而是將請求保存起來(生產者), 然後告訴用戶: 簡訊發送成功. 之後有若干個消費者取出任務, 調用sendMessage方法發送簡訊.
這里, 我使用線程池完成上面的任務:
AsyncSmsImpl.java
{
publicSmssendSms;
=Executors.newFixedThreadPool(3);
publicvoidsetSendSms(SmssendSms){
this.sendSms=sendSms;
}
@Override
publicintsendMessage(Stringmobile,Stringmessage){
try{
executorService.submit(()->sendSms.sendMessage(mobile,message));
}
catch(Exceptione){
Sysemt.out.println("提交任務時發生錯誤"+e);
return0;
}
return-1;
}
publicvoiddestroy(){
try{
executorService.shutdown();
}
catch(Exceptione){}
}
}
在第17行, 我們獲得遠程對象的一個代理對象. 之後就可以通過這個代理對象進行發送簡訊, 查詢賬戶余額等操作.
第18行, 使用該代理對象的submit方法提交了簡訊內容. 該方法的參數信息及返回值含義在介面文檔中有詳細的說明.
第19行我們獲得了結果的狀態碼. 根據文檔上的說明, 狀態碼為2說明提交成功. 簡單起見, 這里我們只關注提交成功的情況. 需要注意的是, 狀態碼為2隻是說明提交成功. 根據官網上的"3-5秒內響應、100%到達", 我們可以推測. 如果提交成功, 那麼基本上3-5秒內,簡訊就會發送成功, 根據用戶的網路情況, 可能稍有延遲用戶就可以收到簡訊.
使用這段代碼發送簡訊也很簡單, 直接new一個對象, 設置好賬號和密碼就可以發送簡訊了.
代碼很簡單, 直接將Sms介面的sendMessage(mobile, message)方法作為一個任務加到線程池的任務隊列中. 這樣等到有空閑線程時, 就會執行sendSms.sendMessage(mobile, message)發送簡訊. 這里我們假設只要保存到線程池就可以成功發送簡訊. 因為發送失敗的情況實際上很罕見.
『肆』 java 如何發送簡訊
JAVA發送手機簡訊,流傳有幾種方法:(1)使用webservice介面發送手機簡訊,這個可以使用sina提供的webservice進行發送,但是需要進行注冊;(2)使用簡訊mao的方式進行簡訊的發送,這種方式應該是比較的常用,前提是需要購買硬體設備,呵呵(3)使用中國網建提供的SMS簡訊平台
JAVA調用
import java.io.UnsupportedEncodingException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class SendMsg_webchinese {
public static void main(String[] args)throws Exception
{
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在頭文件中設置轉碼
NameValuePair[] data ={ new NameValuePair("Uid", "本站用戶名"),new NameValuePair("Key", "介面安全密碼"),new NameValuePair("smsMob","手機號碼"),new NameValuePair("smsText","簡訊內容")};
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("gbk"));
System.out.println(result);
post.releaseConnection();
}
}
jar包下載
commons-logging-1.1.1.jar
commons-httpclient-3.1.jar
commons-codec-1.4.jar
『伍』 如何用JAVA實現發送手機簡訊
1.通過移動或聯通短抄信網關發襲送簡訊,這需要通信服務商給你開通簡訊埠,發送簡訊協議各個服務商都不一樣,比如移動的是cmpp2,cmpp3等
2.第二種是通過硬體設備發送簡訊,這個需要你有專門的硬體設備,比如一個上網卡或者一個手機模塊,通過調用com遵從一些協議發送簡訊
單純靠寫代碼是無法發簡訊的,至少要有一個WEBSERVICE介面或者硬體介面。
『陸』 java怎麼發送簡訊啊
我們以前的產品發簡訊有兩個途徑
1、簡訊貓(買來的設備,可專以理解為手機,設備提供屬商會提供操作設備的介面,一般為Jar)
2、簡訊平台(平台供應商會給你提供介面、帳號、密碼,你調用就可以啦,介面一般為jar或webservice,這個是要給賬戶充值的,如果你是軟體開發商可以在平台供應商於客戶直接賺取每條1-2分的差價)
如果你可以在移動或者聯通可以申請到通道的話也可以直接用,這個我沒有弄過。
『柒』 如何用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怎樣實現簡訊發送與接收
Java實現簡訊發送與接收
/**
*@Authordengsilinming
*@Date2012-9-18
*
*/
packagecom.dengsilinming.mail;
importjava.io.IOException;
importorg.apache.commons.httpclient.Header;
importorg.apache.commons.httpclient.HttpClient;
importorg.apache.commons.httpclient.HttpException;
importorg.apache.commons.httpclient.NameValuePair;
importorg.apache.commons.httpclient.methods.PostMethod;
publicclassSendMsg_webchinese{
/**
*@authordengsilinming
*@dateSep18,2012
*@time9:38:25AM
*@paramargs
*@throwsIOException
*@throwsHttpException
*@description
*/
publicstaticvoidmain(String[]args)throwsHttpException,IOException{
HttpClientclient=newHttpClient();
PostMethodpost=newPostMethod("http://gbk.sms.webchinese.cn");
//PostMethodpost=newPostMethod("http://sms.webchinese.cn/web_api/");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=gbk");//在頭文件中設置轉碼
NameValuePair[]data={newNameValuePair("Uid","dengsilinming"),//注冊的用戶名
newNameValuePair("Key","72da78da5ff54f450505"),//注冊成功後,登錄網站後得到的密鑰
newNameValuePair("smsMob","12345678900"),//手機號碼
newNameValuePair("smsText","這是專用於測試的信息,能否正常發簡訊呢?")};//簡訊內容
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(
"gbk"));
System.out.println(result);
}
}
『玖』 如何用Java實現簡訊自動發送功能
Java實現簡訊自動發送功能主要是用httpclient實現的,要有發簡訊的埠。
1、硬體設備是一個3G網卡;
2、軟體方面需要sun提過的java底層通信common包;
3、此外還需要第三方庫SMSLib,這個是開源項目,主要用於實現java發簡訊的功能;
主要代碼如下:
要導入三個包commons_codec,httpclient,logging
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程序中實現發簡訊
1. 找一個GPRS或手機外發的模塊,硬體提供的API,通過串口通信發送簡訊
2. 找SP運營商,提供簡訊網關,版根據他們權提供的介面文檔開發,有些運營商可以提供給你示例代碼,或者封裝好的jar包等等。簡訊都是需要付費的。量多的話有些運營商可以打折