2012-02-10 37 views
1

我想通過jsmpp發送USSD消息。當我發短信我收到此錯誤SMPP:否定響應00000008

org.jsmpp.extra.NegativeResponseException: Negative response 00000008 found 
     at org.jsmpp.session.AbstractSession.validateResponse(AbstractSession.java:215) 
     at org.jsmpp.session.AbstractSession.executeSendCommand(AbstractSession.java:271) 
     at org.jsmpp.session.SMPPSession.submitShortMessage(SMPPSession.java:320) 

這裏是我的代碼:

  int i = 2; 
      short j = 2; 
      OptionalParameter op1 = new OptionalParameter.Byte(Tag.USSD_SERVICE_OP, (byte) i); 
      OptionalParameter op2 = new OptionalParameter.Byte(Tag.ITS_SESSION_INFO, (byte) j); 
      OptionalParameter[] op = new OptionalParameter[2]; 

      op[0] = op2; 
      op[1] = op1; 

      messageId = session.submitShortMessage("USSD", TypeOfNumber.UNKNOWN, 
        NumberingPlanIndicator.UNKNOWN, sourceNumber, TypeOfNumber.UNKNOWN, 
        NumberingPlanIndicator.UNKNOWN, recipient, new ESMClass(142), 
        (byte) 0, (byte) 1, timeFormatter.format(new Date()), null, 
        new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE), (byte) 0, 
        DataCoding.newInstance(0), 
        (byte) 0, text.getBytes(), op); 
+0

你知道NumberingPlanIndicator和TypeOfNumber的源和目標手機? – szhem 2012-02-10 20:02:11

+0

我不知道TypeOfNumber,但NumberingPlanIndicator是ISDN – totali 2012-02-10 20:06:25

+0

您是否嘗試指定這些參數?如果你有一個短號碼等 – szhem 2012-02-10 20:14:00

回答

3

一般參數ITS_SESSION_INFO用於維護會話,使用

OptionalParameter op2 = null; 
for (OptionalParameter optionalParameter : deliverSm.getOptionalParametes()) { 
    if (optionalParameter.tag == Tag.ITS_SESSION_INFO.code()) { 
     op2 = optionalParameter; 
    } 
} 
int i = 2; 
OptionalParameter op[] = new OptionalParameter[2]; 
OptionalParameter op1 = new OptionalParameter.Byte(Tag.USSD_SERVICE_OP, (byte) i); 
op[0] = op1; 
if (op2 != null) { 
    op[1] = op2; 
}