запрос delivery_sm с символом Unicode - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь разработать симулятор smsc, который будет отправлять delivery_sm на шлюз. Теперь я могу успешно отправить запрос на доставку на шлюз. Но на этот раз мне нужно отправить символ Unicode в качестве тела для массажа. Когда я пытаюсь отправить символы Unicode, шлюз не распознает его. Он отображается как недопустимое ключевое слово в качестве массажа. , Теперь я предполагаю, что моя 16-битная кодировка массажа неверна. Вот мой код. Пожалуйста, дайте мне исправленный код, если это возможно.

try {

    ByteBuffer ed = new ByteBuffer();
    DeliverSM request = new DeliverSM();

    private String message="text";
    private SimulatorPDUProcessor proc;

    request.setEsmClass((byte)Data.SM_UDH_GSM); //Set UDHI Flag Data.SM_UDH_GSM=0×40
    request.setDataCoding((byte) ((byte) 0*04));

    ed.appendByte((byte) 6); // UDH Length
    ed.appendByte((byte) ((byte) 0*04)); // IE Identifier
    ed.appendByte((byte) 4); // IE Data Length
    ed.appendByte((byte) 00) ; //Reference Number 1st Octet
    ed.appendByte((byte) 00) ; //Reference Number 2nd Octet

    try {
        ed.appendString(message, Data.ENC_UTF16_BE);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    request.setShortMessage(message,Data.ENC_UTF16);

    request.setSourceAddr("sourceAdd");
    request.setDestAddr("919865851257");
    proc.serverRequest(request);

    System.out.println("Message sent.");
    try {
        generateResult(sourceAdd,"sent");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
} catch (WrongLengthOfStringException e) {
    System.out.println("Message sending failed ");
    event.write(e, "");
}

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вам нужно установить

submitSM.setDataCoding((byte)(0x08)); // UCS-2
submitSM.setShortMessage( MessageStr, "UTF-16" );
0 голосов
/ 16 сентября 2011

Попробуйте вместо этого использовать кодировку UTF-8.Возможно, вам сначала нужно будет на самом деле кодировать свои данные.

Отказ от ответственности: я не имею представления о deliver_sm API, , но SMS использует UTF-8 .<- Я исправлен, <a href="http://en.wikipedia.org/wiki/Short_Message_Service#Message_size" rel="nofollow"> USC-16 используется для сообщений, которые не соответствуют 7-битной и 8-битной кодировкам.

...