通过不断的调试和沟通,短信功能终于好使了
为了让更多的人少走弯路,特将编写方法和注意事项记录下来,希望能够对大家有帮助;
短信网关的申请流程(此部分工作我们有专门的同事去搞定,我仅略知一二,仅供参考);
向宽带公司(我们用的是联通在信平台)提交申请,然后一顿审核,
审核通过后,宽带公司在网关做数据(分配接入号、公司代码、绑定ip等)
做完数据后会通知接口人,并要求测试
基于SGIP协议的短信接口开发:
我是在华为的短信开发包的基础上开发的,由于不知道该包是否涉及版权问题,所以本人暂不提供了,可以到网上自行解决;
下载后就是一个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) {
System.out.println("网络异常...........");
ex.printStackTrace();
return;
}
String[] UserNumber = { "8618686619970","8618686619977"};//接收短信的手机号码,前边要加上86
String content = "抚松联通家校互动项目已成功启动,发送一个测试信息给您!";
byte[] MessageContent = content.getBytes("GB2312");
try {
// 下发短息
SGIPSubmitMessage sgipsubmit = new SGIPSubmitMessage(
SPNumber, // SP的接入号码
ChargeNumber, // 付费号码 string
UserNumber, // 接收该短消息的手机号,最多100个号码 string[]
CorpId, // 企业代码,取值范围为0~99999 string
ServiceType, // 业务代码,由SP定义 stirng
03, // 计费类型 int
"0", // 该条短消息的收费值 stirng
"0", // 赠送用户的话费 string
0, // 代收费标志0:应收1:实收 int
0, // 引起MT消息的原因 int
06, // 优先级0~9从低 到高,默认为0 int
null, // 短消息寿命的终止时间 date
null, // 短消息定时发送的时间 date
1, // 状态报告标记 int
0, // GSM协议类型 int
0, // GSM协议类型 int
15, // 短消息的编码格式 int
0, // 信息类型 int
MessageContent.length, // 短消息内容长度 int
MessageContent, // 短消息的内容 btye[]
"0" // 保留,扩展用 string
);
// 收到的响应消息转换成rep
int status = ProcessSubmitRep(sgipsmp.send(sgipsubmit));
System.out.println(status);
if (status == 0) {
System.out.println("消息发送成功..........");
} else {
System.out.println("消息发送失败..........");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static int ProcessSubmitRep(SGIPMessage msg) {
// 收到的响应消息转换成repMsg
SGIPSubmitRepMessage repMsg = (SGIPSubmitRepMessage) msg;
System.out.println(repMsg.getSrcNodeId());
System.out.println("status:::::::" + repMsg.getResult());
if (repMsg != null && repMsg.getResult() == 0) {
System.out.println("发送成功:::");
}
return repMsg.getResult();
}
}
下行:
import com.huawei.insa2.comm.sgip.message.SGIPDeliverMessage;
import com.huawei.insa2.comm.sgip.message.SGIPMessage;
import com.huawei.insa2.comm.sgip.message.SGIPSubmitRepMessage;
import com.huawei.insa2.util.Args;
import com.huawei.smproxy.SGIPSMProxy;
public class Mo extends SGIPSMProxy {
//SMG服务器信息
private static String serHost = "192.168.88.156";
private static int serviceport = 8801;
//本机信息
private static String localhost = "192.168.88.156";
private static int localport = 8805;
//private static String login_Name="huanghai";
//private static String login_PassWord="123456";
public Mo(Args args) {
super(args);
System.out.println("进入启动监听........");
startService(localhost, localport); //我想知道这里传递的host和port是本地的还是那的
}
public static void main(String[] args)
{
Args argstr = new Args();
argstr.set("serHost", serHost);
argstr.set("serviceport", serviceport);
argstr.set("localhost", localhost);
argstr.set("localport", localport);
argstr.set("transaction-timeout", 10); // 操作超时时间(单位:秒)
argstr.set("read-timeout", 15); // 物理连接读操作超时时间(单位:秒)
//这里的安全认证问题如何解决?
Mo mymo=new Mo(argstr);
}
/**
* 收到用户回复的短信(上行)。
*
* @param msg
* 收到的消息
* @return 返回的相应消息。
*/
public SGIPMessage onDeliver(SGIPDeliverMessage msg) {
/** @todo do some thing to handle this message. then return a response */
ProcessRecvDeliverMsg(msg);
System.out.println("正在等待接收.......");
return super.onDeliver(msg);
}
/**
* 对收到短讯中心下发的短消息的处理。 收到用户信息
*
* @param msg
* 短讯中心下发的短消息
*/
public void ProcessRecvDeliverMsg(SGIPMessage msg) {
if (msg instanceof SGIPSubmitRepMessage) {
System.out.println("返回下发短信的相应消息");
}
if (msg instanceof SGIPDeliverMessage) {
// 收到用户发送的短信(上行)
SGIPDeliverMessage deliverMsg = (SGIPDeliverMessage) msg;
String userNumber = deliverMsg.getUserNumber(); // 手机号码
String msgContent = deliverMsg.toString(); // 短信内容
/
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
联通网关.zip (170个子文件)
sgip.bat 86B
sgip.bat 86B
DbMonitor.class 3KB
DbMonitor.class 3KB
MySgipProxy.class 1KB
MySgipProxy.class 1KB
SGIP.class 1KB
SGIP.class 1KB
短消息代理(SGIP SMProxy)使用说明书.doc 117KB
mysql-connector-java-5.1.0-bin.jar 553KB
mysql-connector-java-5.1.0-bin.jar 553KB
smproxy.jar 469KB
smproxy.jar 469KB
Debug.java 23KB
Cfg.java 21KB
PSocketConnection.java 18KB
SGIPSubmitMessage.java 16KB
SGIPSocketConnection.java 15KB
CMPPSubmitMessage.java 14KB
CMPP30SubmitMessage.java 13KB
SMGPForwardMessage.java 13KB
CNGPSubmitMessage.java 12KB
SMGPSubmitMessage.java 11KB
CMPP30DeliverMessage.java 9KB
CMPPDeliverMessage.java 9KB
CNGPDeliverMessage.java 8KB
SMPPSubmitMessage.java 8KB
CNGPConnection.java 7KB
SGIPConnection.java 6KB
SGIPSMProxy.java 6KB
SMPPDeliverMessage.java 6KB
SecurityTools.java 6KB
SMGPMtRouteUpdateMessage.java 6KB
CNGPConstant.java 6KB
Args.java 6KB
CMPPConnection.java 6KB
CMPP30Connection.java 5KB
SMPPConnection.java 5KB
PLayer.java 5KB
SMGPConstant.java 5KB
SMGPConnection.java 5KB
SMGPDeliverMessage.java 5KB
SMGPQueryRespMessage.java 5KB
CMPPQueryRepMessage.java 5KB
SGIPBindMessage.java 5KB
CNGPLoginMessage.java 5KB
SMGPMoRouteUpdateMessage.java 4KB
SMPPLoginMessage.java 4KB
SGIPDeliverMessage.java 4KB
SGIPConstant.java 4KB
CMPPConstant.java 4KB
TypeConvert.java 4KB
SMGPLoginMessage.java 4KB
Resource.java 4KB
Base64.java 4KB
DbMonitor.java 4KB
DbMonitor.java 4KB
CMPPConnectMessage.java 4KB
SGIPReportMessage.java 3KB
SMProxy30.java 3KB
CMPPQueryMessage.java 3KB
SMPPConstant.java 3KB
SGIPUserReportMessage.java 3KB
SMGPSMProxy.java 3KB
SMProxy.java 3KB
SMPPSMProxy.java 3KB
SGIPEventAdapter.java 3KB
SMGPQueryMessage.java 3KB
CMPPReader.java 3KB
PEvent.java 2KB
SMGPReader.java 2KB
SGIPBindRepMessage.java 2KB
CNGPDeliverRespMessage.java 2KB
CNGPSMProxy.java 2KB
SGIPTransaction.java 2KB
SSListener.java 2KB
CMPPActiveRepMessage.java 2KB
WatchThread.java 2KB
CMPP30EventAdapter.java 2KB
CMPPConnectRepMessage.java 2KB
CMPPEventAdapter.java 2KB
SMGPEventAdapter.java 2KB
SMPPReader.java 2KB
SMGPLoginRespMessage.java 2KB
SMPPSubmitRespMessage.java 2KB
CMPP30ConnectRepMessage.java 2KB
CMPPDeliverRepMessage.java 2KB
CNGPMessage.java 2KB
SMPPMessage.java 2KB
SMGPDeliverRespMessage.java 2KB
CMPP30DeliverRepMessage.java 2KB
CNGPTransaction.java 2KB
SMPPEventAdapter.java 2KB
CNGPReader.java 2KB
SGIPReader.java 2KB
CMPPSubmitRepMessage.java 2KB
SGIPMessage.java 2KB
CMPP30Reader.java 2KB
CMPP30SubmitRepMessage.java 2KB
SMPPEnquireLinkRespMessage.java 2KB
共 170 条
- 1
- 2
资源评论
nut__
- 粉丝: 41
- 资源: 61
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功