我是在華為的短信開發包的基礎上開發的,由于不知道該包是否涉及版權問題,所以本人暫不提供了,可以到網上自行解決;
下載后就是一個jar包
短信發送的代碼如下:
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import com.huawei.insa2.comm.sgip.message.SGIPMessage;
import com.huawei.insa2.comm.sgip.message.SGIPSubmitMessage;
import com.huawei.insa2.comm.sgip.message.SGIPSubmitRepMessage;
import com.huawei.insa2.util.Args;
import com.huawei.smproxy.SGIPSMProxy;
public class Mt {
private static String SPNumber = "1065579112";//接入號碼
private static String ChargeNumber = "000000000000000000000"; // 計費號碼,我們是白名單
private static String ServiceType = "JXHD";//服務類型
private static String host = "192.168.88.156"; // 主機名,網關IP
private static int port = 8801; // 端口號,這里特別注意下,接入協議中寫的是8804,害得我調了很久,后來才知道改了,所以,這個在接入前,建議與網關人員確定
private static String CorpId = "52322"; // 企業代碼
private static String login_Name = "fslt"; // 登陸名
private static String login_PassWord = "fslt"; // 登陸密碼
public static void main(String[] args) throws UnsupportedEncodingException {
int srcnode =new BigInteger("82322").intValue(); //源節點編號,這一步非常重要,華為包中,該字段類型為int,而接入協議中要求在企業代碼前加上30000,這樣就超過了int的取值范圍,所以需要用BigInteger轉一下就可以了
Args argstr = new Args();
argstr.set("host", host);
argstr.set("port", port);
argstr.set("transaction-timeout", 10); // 操作超時時間(單位:秒)
argstr.set("read-timeout", 15); // 物理連接讀操作超時時間(單位:秒)
argstr.set("source-addr", srcnode); // SP…ID(最大為六位字符)
argstr.set("login-name", login_Name);
argstr.set("login-pass", login_PassWord);
argstr.set("debug", "false");
// 連接登陸
SGIPSMProxy sgipsmp = new SGIPSMProxy(argstr); // 這里
try {
//connect表示向SMG登陸,登錄名與密碼分別是SMG向SP分配的用戶名與密碼,調用這個接口方法,向SMG發送Bind命令消息。
//如果發送消息超時或通信異常則拋出異常,需要調用者捕獲處理。
boolean reslut = sgipsmp.connect(login_Name, login_PassWord); // 登陸得到true和false
if (reslut) {
System.out.println("連接成功...........");
} else {
System.out.println("連接失敗(用戶名或密碼錯誤)...........");
return;
}
} catch (Exception ex) {
&nb