Java 通过SMPP发送多条短信
我将直截了当地回答我的问题Java 通过SMPP发送多条短信,java,sms-gateway,smpp,Java,Sms Gateway,Smpp,我将直截了当地回答我的问题 我正在使用Logica smpp,我想向多个号码发送短信。下面的代码给出了异常 public void submitMulti() { String serviceType = ""; byte replaceIfPresentFlag = 0; String scheduleDeliveryTime = null; String validityPeriod = null; byte esmClass = 0; //#################
public void submitMulti() {
String serviceType = "";
byte replaceIfPresentFlag = 0;
String scheduleDeliveryTime = null;
String validityPeriod = null;
byte esmClass = 0;
//######################
//byte protocolId = 0;
//byte dataCoding = 0;
byte protocolId = 0; //0x00; commented is for flash
byte dataCoding = (byte) 0x08; //0x18
byte smsClass = 0x00;
//######################
byte ton = 1;
byte npi = 1;
byte priorityFlag = 0;
byte registeredDelivery = 0; //TODO registered delivery
byte smDefaultMsgId = (byte) 12; //0;
try {
SubmitMultiSM request = new SubmitMultiSM();
SubmitMultiSMResp response;
// input values and set some :-)
String sourceAddress = "123456789012";
int numberOfDestination = 10;
for (int i = 0; i < numberOfDestination; i++) {
request.addDestAddress(new DestinationAddress(new Address(ton,npi,"923458503302")));
}
// set other values
request.setServiceType(serviceType);
request.setSourceAddr(sourceAddress);
request.setReplaceIfPresentFlag(replaceIfPresentFlag);
request.setShortMessage("Hy");
request.setScheduleDeliveryTime(scheduleDeliveryTime);
request.setValidityPeriod(validityPeriod);
request.setEsmClass(esmClass);
request.setProtocolId(protocolId);
request.setPriorityFlag(priorityFlag);
request.setRegisteredDelivery(registeredDelivery);
request.setDataCoding(dataCoding);
request.setSmDefaultMsgId(smDefaultMsgId);
String ipAddress = Bundle.getInstance().getValue(Bundle.Application_Contants.IP_ADDRESS.toString());
int port = Integer.valueOf(Bundle.getInstance().getValue(Bundle.Application_Contants.PORT.toString()));
long receiveTimeOut = Long.valueOf(Bundle.getInstance().getValue(Bundle.Application_Contants.RECEIVE_TIMEOUT.toString()));
TCPIPConnection connection = new TCPIPConnection(ipAddress,port);
connection.setReceiveTimeout(receiveTimeOut);
customSession = new Session(connection);
// send the request
System.out.println("Submit Multi request " + request.debugString());
if (!asynchronous) {
customSession.submitMulti(request);
} else {
response = customSession.submitMulti(request);
System.out.println("Submit Multi response " + response.debugString());
messageId = response.getMessageId();
}
} catch (Exception e) {
log.error(e,e);
System.out.println("Submit Multi operation failed. " + e.getMessage());
} finally {
}
有人知道吗?假设您的代码充当ESME,在发送任何SubmitSM、SubmitMultiSM或DataSM之前,必须发送绑定请求(通过BindTransmiter或BindTransciever)。现在它没有显示任何错误。但是消息没有传递到指定的目的地(msisdn)。至于第二个问题:(1)所有的目的地号码都是相同的。我会尝试使用独特的目的地进行测试。(2) 绑定请求必须具有有效的用户名/密码组合。我会检查response对象,看看bind请求是否被接受。非常感谢它现在可以工作了。由于运营商出现了一些问题,我尝试了另一个运营商的其他msisdn,它像一个魔咒一样工作,使用相同的msisdn没有问题。再次感谢。还有一个问题是,并非所有SMSC都支持
submit\u multi
。连接类型是什么?t、r或tr?
java.lang.NullPointerException
at org.smpp.Session.send(Session.java:1100)
at org.smpp.Session.send(Session.java:1173)
at org.smpp.Session.submitMulti(Session.java:727)
at com.noetic.topUpBooster.smpp.JarConnection.submitMulti(JarConnection.java:413)
at com.noetic.sdp.alerts.JarCheck.run(JarCheck.java:34)
Submit Multi operation failed. null