JAVA發送手機短信,流傳有幾種方法:
(1)使用webservice接口發送手機短信,這個可以使用sina提供的webservice進行發送,但是需要進行註冊;
(2)使用短信mao的方式進行短信的發送,這種方式應該是比較的常用,前提是需要購買硬件設備
(3)使用中國網建提供的SMS短信平臺(申請賬號地址:http://web.daiyicloud.com/)
本程序主要是運用了中國網建提供的SMS短信平臺,這個短信平臺基於java提供個專門的接口,注意在使用一下程序之前需要在sms官網註冊賬號(需要賬號很接口祕鑰)
1. jar包下載
commons-logging-1.1.1.jar
commons-httpclient-3.1.jar
commons-codec-1.4.jar
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 Senddx {
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://api.daiyicloud.com/asmx/smsservice.aspx");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=gbk");// 在頭文件中設置轉碼
NameValuePair[] data = {
new NameValuePair("name", "kekeair"),//賬戶名稱
new NameValuePair("pwd", "D728538373ED125DD6683D632ED2"),//接口祕鑰,針對每一個註冊用戶的密碼生成
new NameValuePair("mobile", "18613846014"),//要發送的手機號,多人時使用","隔開
new NameValuePair("sign", "kekeair"),//用戶簽名
new NameValuePair("type", "pt"),//發送類型,固定值"pt"
new NameValuePair("content", "kekeair") //發送內容
};
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();
}
}
注:上面的用戶名和密碼是我原先申請的,不知道爲什麼被停用了,在運行本程序之前請先到SMS短信平臺去申請一個用戶名和密碼。
短信發送後返回值 | 說 明 |
---|---|
-1 | 沒有該用戶賬戶 |
-2 | 密鑰不正確(不是用戶密碼) |
-3 | 短信數量不足 |
-11 | 該用戶被禁用 |
-14 | 短信內容出現非法字符 |
-41 | 手機號碼爲空 |
-42 | 短信內容爲空 |
大於0 | 短信發送數量 |