package com;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigInteger;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import spApi.Bind;
import spApi.BindResp;
import spApi.Deliver;
import spApi.DeliverResp;
import spApi.Report;
import spApi.ReportResp;
import spApi.SGIP_Command;
import spApi.SGIP_Exception;
import spApi.Submit;
import spApi.SubmitResp;
import spApi.Unbind;
import spApi.UnbindResp;
import spApi.Userrpt;
import spApi.UserrptResp;
public class SMSHelper {
//发送短消息
public static void sendLetter() {
Socket so=null;
OutputStream out=null;
InputStream input=null;
Bind command=null;
Bind com=null;
SGIP_Command sgip=null;
SGIP_Command tmp=null;
int i=0;
try {
sgip=new SGIP_Command();
command=new Bind(xxxxxxxxxx);//节点号
command.SetLoginType(1);
command.SetLoginName("xxxxxxx");
command.SetLoginPassword("xxxx");
int err;
byte [] byte_content = new byte[140];
Submit submit = null;
SubmitResp submitresp=null;
Unbind term=null;
BindResp resp=null;
UnbindResp Unresp=null;
so=new Socket("xxx.xxx.xxx.xxx",8801);
out=new DataOutputStream(so.getOutputStream());
input = new DataInputStream(so.getInputStream());
err=command.write(out);//发送bind
if(err!=0)
{
System.out.println("err"+err);
}
tmp=sgip.read(input);//接收sgip消息
if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND_RESP)
{
System.out.println("登录");
resp=(BindResp)tmp;//强制转换为bindresp
resp.readbody();//对消息进行解包
System.out.println(tmp.getSeqno_1());
System.out.println(tmp.getSeqno_2());
System.out.println(tmp.getSeqno_3());
System.out.println(resp.GetResult());
}
for(i=0;i<140;i++)
{
byte_content[i] = 51;
i++;
byte_content[i] = 51;
i++;
byte_content[i] = 52;
i++;
byte_content[i] = 53;
i++;
byte_content[i] = 54;
i++;
byte_content[i] = 55;
i++;
byte_content[i] = 56;
i++;
byte_content[i] = 57;
i++;
byte_content[i] = 58;
i++;
byte_content[i] = 59;
}
submit = new Submit(xxxxxxxx);//节点号
String content = "短信测试内容";
byte[] MessageContent = content.getBytes("GB2312");
Date nowtime = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("MMddHHmmss");
String tmpTime = dateFormat.format(nowtime);
submit.setReportFlag(1);
submit.setSPNumber("xxxxxxx");//接入号
submit.setChargeNumber("000000000000000000000");
submit.setUserNumber("86xxxxxxxx");//手机号不过一定要加86
submit.setServiceType("xxxxxx");//服务号
submit.setCorpId("xxxxx");//企业号
submit.setFeeType(3);
submit.setFeeValue("0");
submit.setGivenValue("0");
submit.setAgentFlag(0);
submit.setMOrelatetoMTFlag(0);
submit.setExpireTime(tmpTime);
submit.setScheduleTime(tmpTime);//不同的短信接口对时间的要求也不一样子。这里一定要
submit.setPriority(6);
submit.setReportFlag(1);
submit.setTP_pid(0);
submit.setTP_udhi(0);
submit.setMessageType(0);
submit.setBinContent(10, byte_content);
submit.setContent(15, "大家快跑");
int len = submit.write(out);//发送submit
System.out.println("len:"+len);
tmp=sgip.read(input);
if(tmp.getCommandID()==SGIP_Command.ID_SGIP_SUBMIT_RESP)
{
System.out.println("发送短消息");
submitresp=(SubmitResp)tmp;//强制转换
submitresp.readbody();//解包
System.out.println(tmp.getSeqno_1());
System.out.println(tmp.getSeqno_2());
System.out.println(tmp.getSeqno_3());
System.out.println(submitresp.getResult());
}
term=new Unbind(3000099050l);
term.write(out);//发送unbind
tmp=sgip.read(input);
if(sgip.getCommandID()==SGIP_Command.ID_SGIP_UNBIND_RESP)
{
System.out.println("解除锁定");
Unresp=(UnbindResp)tmp;
System.out.println(tmp.getSeqno_1());
System.out.println(tmp.getSeqno_2());
System.out.println(tmp.getSeqno_3());
}
out.close();
so.close();
}catch (SGIP_Exception e){
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
} finally {
}
}
//接收短信
public static void recvLetter() {
Socket so=null;
OutputStream output=null;
InputStream input=null;
SGIP_Command sgip = null;
Bind bind = null;
try {
sgip =new SGIP_Command();
SGIP_Command tmp=null;
Deliver deliver=null;
DeliverResp deliverresp = null;
so=new Socket("xxx.xxx.xxx.xxx",8801);
input=so.getInputStream();
output=so.getOutputStream();
bind = new Bind(xxxxxx);
bind.SetLoginType(1);
bind.SetLoginName("xxxxxxx");
bind.SetLoginPassword("xxxxxxx");
System.out.println("正在登录中......");
int err=bind.write(output);//发送bind
if(err!=0)
{
System.out.println("err"+err);
}
tmp = sgip.read(input);
if(tmp.getCommandID() == SGIP_Command.ID_SGIP_BIND_RESP)
{
BindResp resp = (BindResp) tmp;
resp.readbody();
if(resp.GetResult() == 0)
{
System.out.println("登录成功!!");
}
else
{
System.out.println("登录失败");
}
}
System.out.println("正在接收中....");
while(true)
{
tmp = sgip.read(input);
if(tmp.getCommandID() == SGIP_Command.ID_SGIP_DELIVER)
{
System.out.println("接收到信息");
deliver=(Deliver)tmp;//强制转换
deliver.readbody();//解包
System.out.println(deliver.getTotalLength());
System.out.println(deliver.getCommandID());
System.out.println(deliver.getSeqno_1());
System.out.println(deliver.getSeqno_2());
System.out.println(deliver.getSeqno_3());
System.out.println(deliver.getUserNumber());
System.out.println(deliver.getSPNumber());
System.out.println(deliver.getTP_pid());
System.out.println(deliver.getTP_udhi());
System.out.println(deliver.getMessageCoding());
System.out.println(deliver.getMessageLength());
System.out.println( new String(deliver.getMessageByte(),"UnicodeBigUnmarked"));
deliverresp = new DeliverResp(3000099050l,0);
deliverresp.SetResult(0);
deliverresp.write(output);
break;
}
}
Unbind term=new Unbind(xxxxxxx);//节点号
term.write(output);//发送unbind
tmp=sgip.read(input);
if(sgip.getCommandID()==SGIP_Command.ID_SGIP_UNBIND_RESP)
{
System.out.println("解除锁定");
}
output.close();
so.close();
} catch (Exception e) {
System.out.println(e.toString());
} finally {
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SMSHelper.recvLetter();
}
}
|