1. 程式人生 > >用java實現傳送手機簡訊的DEMO

用java實現傳送手機簡訊的DEMO

最近公司沒有專案,閒來無事,研究了一下利用java程式碼傳送手機簡訊的功能,感覺很有意思,整理下來,算一個小小的沉澱吧!

上網查了查,JAVA傳送手機簡訊有幾種方法:

(1)使用webservice介面傳送手機簡訊,這個可以使用sina提供的webservice進行傳送,但是需要進行註冊;

(2)使用簡訊mao的方式進行簡訊的傳送,這種方式應該是比較的常用,前提是需要購買硬體裝置;

(3)使用中國網建提供的SMS簡訊平臺(申請賬號地址:http://sms.webchinese.cn/default.shtml)

本程式主要是運用了中國網建提供的SMS簡訊平臺,這個簡訊平臺基於java提供個專門的介面,其原理是:給使用者傳送簡訊主要是通過移動提供給的介面,而我們程式主要是將簡訊資訊(手機號碼、簡訊內容)發給這個介面,之後就是移動的事情了(根據資訊發給相應的使用者)....


下面是我的java程式碼,僅供參考:

package in.dapai.server;

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;
/**
 * 測試傳送簡訊
 * 
 * @author zrz
 */
public class SendMsg {
	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", "javagirlone"),
				new NameValuePair("Key", "a7d2b13d68d416014147"),
				new NameValuePair("smsMob", "182******21"),
				new NameValuePair("smsText", "XXX接收:手機驗證碼:12451597474") };
		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();
	}
}
本程式執行需要匯入3個jar檔案,點選下面連結下載即可,

友情提示:

GBK編碼傳送介面地址
http://gbk.sms.webchinese.cn/?Uid=本站使用者名稱&Key=介面安全密碼&smsMob=手機號碼&smsText=簡訊內容 
UTF-8編碼傳送介面地址:
http://utf8.sms.webchinese.cn/?Uid=本站使用者名稱&Key=介面安全密碼&smsMob=手機號碼&smsText=簡訊內容
獲取簡訊數量介面地址(UTF8):
http://sms.webchinese.cn/web_api/SMS/?Action=SMS_Num&Uid=本站使用者名稱&Key=介面安全密碼


獲取簡訊數量介面地址(GBK):
http://sms.webchinese.cn/web_api/SMS/GBK/?Action=SMS_Num&Uid=本站使用者名稱&Key=介面安全密碼

簡訊傳送後返回值 說 明
-1 沒有該使用者賬戶
-2 介面金鑰不正確 [檢視金鑰]
不是賬戶登陸密碼
-21 MD5介面金鑰加密不正確
-3 簡訊數量不足
-11 該使用者被禁用
-14 簡訊內容出現非法字元
-4 手機號格式不正確
-41 手機號碼為空
-42 簡訊內容為空
-51 簡訊簽名格式不正確
介面簽名格式為:【簽名內容】
-6 IP限制
大於0 簡訊傳送數量

注:上面的使用者名稱和密碼是我原先申請的,在執行本程式之前請先到SMS簡訊平臺去申請一個使用者名稱和密碼。

附:
<span style="font-size:18px;"><span style="color:#ff0000;">1. ASP 呼叫例子</span>
<%
'常用函式
'輸入url目標網頁地址,返回值getHTTPPage是目標網頁的html程式碼
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then 
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear 
end function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText 
objstream.Close
set objstream = nothing
End Function

'自已組合一下提交的URL加入自己的賬號和密碼
sms_url="http://sms.webchinese.cn/web_api/?Uid=賬號&Key=介面金鑰&smsMob=手機號碼&smsText=簡訊內容"
response.write getHTTPPage(sms_url)
%> 

<span style="color:#ff0000;">2.C# 呼叫</span>
//需要用到的名稱空間
using System.Net;
using System.IO;
using System.Text;
//呼叫時只需要把拼成的URL傳給該函式即可。判斷返回值即可
public string GetHtmlFromUrl(string url)
{
string strRet = null;
if(url==null || url.Trim().ToString()=="")
{
return strRet;
}
string targeturl = url.Trim().ToString();
try
{
HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
hr.Method = "GET";
hr.Timeout = 30 * 60 * 1000;
WebResponse hs = hr.GetResponse();
Stream sr = hs.GetResponseStream();
StreamReader ser = new StreamReader(sr, Encoding.Default);
strRet = ser.ReadToEnd(); 
}
catch (Exception ex)
{
strRet = null;
}
return strRet;
}

<span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">3.JAVA呼叫</span></span>
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

說明:如果返回值是200,應該是整段程式程式碼沒有執行完整,只獲取到client.executeMethod(post)HTTP狀態碼的訊息;介面是提交成功,沒有執行下半部的返回訊息程式碼。
client.executeMethod(post);HTTP狀態碼參考:http://baike.baidu.com/view/1790469.htm

<span style="color:#ff0000;">4.PHP</span>
$url='http://sms.webchinese.cn/web_api/?Uid=賬號&Key=介面金鑰&smsMob=手機號碼&smsText=簡訊內容';
echo Get($url);
function Get($url)
{
if(function_exists('file_get_contents'))
{
$file_contents = file_get_contents($url);
}
else
{
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}

<span style="color:#ff0000;">5.VB.NET</span>
'呼叫傳送簡訊,NoList接收號碼.多個之間用,分開,Memo內容70字
Public Function SendSMS(ByVal NoList As String, ByVal Memo As String) As String 
Dim Url As String = "http://sms.webchinese.cn/web_api/?Uid=賬號&Key=介面金鑰&smsMob=手機號碼&smsText=簡訊內容"
Dim webClient As New Net.WebClient()
Try
'Dim responseData As Byte() = 
Dim srcString As String = webClient.DownloadString(Url)
Return srcString
Catch
Return "-444"
End Try
End Function</span>




相關推薦

java實現傳送手機簡訊DEMO

最近公司沒有專案,閒來無事,研究了一下利用java程式碼傳送手機簡訊的功能,感覺很有意思,整理下來,算一個小小的沉澱吧! 上網查了查,JAVA傳送手機簡訊有幾種方法: (1)使用webservice介面傳送手機簡訊,這個可以使用sina提供的webservice進行傳送,但

關於Java實現傳送簡訊(部分程式碼來源於網路)

第一步: 訪問中國網建SMS簡訊通網頁註冊賬號。儲存金鑰。 第二步:編碼實現 編寫JavaBean,定義變數phonenumber,生成get/set方法 建立介面 //傳送簡訊 void send(Player player) throws Exception; //實現

java調介面實現傳送手機簡訊驗證碼功能,手機驗證碼,介面呼叫

近來由於專案需要,需要用到手機簡訊驗證碼的功能,其中最主要的是用到了第三方提供的簡訊平臺介面WebService客戶端介面,下面我把我在專案中用到的記錄一下,以便給大家提供個思路,由於本人的文采有限,還請大家見諒! 一:首先上幾張案例截圖,以便大家可以瞭

C# 實現傳送手機簡訊(可用)

前幾天分享了java如何對接簡訊介面的例項,這兩天技術經理又佈置了任務要求在老的網站也要對接簡訊介面,撿起了之前學習的c#,但是因為年代久遠,所有在技術方面略有不熟悉的,就參考了其他同行的程式碼~~加以修改,現在把原始碼分享給大家,希望可以給大家一個幫助,當然簡

Java實現傳送http的get和post請求

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; imp

python 實現傳送手機簡訊驗證碼後臺方法

1、生成4位數字驗證碼 def createPhoneCode(session): chars=['0','1','2','3','4','5','6','7','8','9'] x = random.choice(chars),random.choice(

C# .net實現傳送手機簡訊功能

.net實現傳送手機簡訊功能其實很簡單,只需要呼叫簡訊服務商的介面即可。程式碼如下: string url = "{0}?act=send&username={1}&passwd={2}&destnumbers={3}&

java實現傳送手機驗證碼功能

2. 註冊好之後,點選 使用者中心 -> 賬戶管理,就會進入如下介面 (順便提一下,新註冊的使用者,平臺會免費贈送你10元,足夠大家學習和使用了,所以不用擔心需要充錢)  你需要做的就是獲取你自己的 ACCOUNT SID 和 AUTH TOKEN 3. 需要

java 免費傳送手機簡訊功能

天天打醬油,閒來無事把現有專案上的一些對以後開發有用的例項進行提取! package com; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOExcept

java實現的一個傳送手機簡訊

今天閒來無事,在微博上看到一個關於用Java實現的一個傳送手機簡訊的程式,看了看,寫的不太相信,閒的沒事,把他整理下來,以後可能用得著 JAVA傳送手機簡訊,流傳有幾種方法:(1)使用webservice介面傳送手機簡訊,這個可以使用sina提供的webservice進行傳送,但是需要進行註冊;(2)

JAVA傳送手機簡訊,client簡訊傳送介面示例(java)

程式碼中有註釋: //傳送簡訊的方法 private static ObjectMapper mapper = new ObjectMapper(); public String sendSms(){ Long phoneNum = getLong("phoneNum"); Map

利用socket技術實現java實現客戶端向服務端傳送檔案,伺服器端接收檔案並給出一個響應。

通訊是網路程式設計中重要的組成部分,而socket程式設計是網路程式設計的基礎。利用socket可以實現客戶端和伺服器端的通訊。下面我先把客戶端和伺服器端的程式碼粘上去再進行詳細的分析。 package test1; import java.io.File; import java.io

java實現傳送簡訊功能

1、在阿里雲簡訊服務中添加簽名 2、在阿里雲簡訊服務中新增模板 3、建立屬於自己的AccessKey ID和Access Key Secret 4、需要下載兩個jar包                   &nb

【轉】Java實現網路語音訊號傳送

本文轉載自部落格:https://www.aliyun.com/jiaocheng/347518.html ----------------------------------------------------------------------------------------------

java 實現傳送簡訊驗證碼功能

如何使用java + maven的專案環境傳送簡訊驗證碼,本文使用的是榛子云簡訊 的介面。 1. 安裝sdk 下載地址: http://smsow.zhenzikj.com/doc/sdk.html 下載下來是jar檔案,需要將jar釋出到本地的maven倉庫中, 在c

java 實現傳送簡訊驗證碼(網易雲)

連結:https://pan.baidu.com/s/1saRmzciNQWpFxHJRN0ISTg 密碼:siyt 實現傳送驗證碼的工程下載 1、我們開啟這個工程,檢視其中的程式碼 package com.ghj.test; import java.io.IOExce

java實現傳送簡訊的模板

不單單隻發驗證碼:123456 ;需要加一些傳送方的資訊, 譬如:驗證碼:123456,尊敬的會員,您正在使用手機號更換服務[驗證碼告知他人將導致賬號被盜,請勿洩露]【中國銀行】。 上面簡訊介面提供商只提供我們123456 這時需要新增相關模板,還有其他場景需要傳送簡訊,

java傳送手機簡訊

package com.lee.used; import java.io.IOException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.Ht

java實現郵件傳送驗證碼

java實現郵件傳送驗證碼    建議不要用qq郵箱,我使用qq郵箱直接一直給我報530錯誤,我一直認為我程式碼寫的有錯誤或者POP3/SMTP服務沒弄好。所以建議註冊個別的郵箱,我就申請了個網易163郵箱瞬間就好了。所以去申請個別的郵箱吧。   用郵

init.rc文件中面啟動c++程序,通過jni調java實現

mini val sni ril urn runtime sport mco env </pre><p>註:假設是自己的myself.jar包,還要修改例如以下:</p><p>target/product/core_bas