3

smpp 3.4 を使用してショート メッセージを送信するアプリケーションを作成しましたが、うまく動作しますが、一部の電話では次のメッセージが表示されました。

このメッセージを表示できません

これは私の関数のソースコードです:

public String sendMsg(JsonObject paramsIN) {
    String smsMessage = paramsIN.getString("body");
    String smsDestination = paramsIN.getString("to");
    String smsSource = paramsIN.getString("from");
    String smscNAME = paramsIN.getString("smsc");

    SubmitSM request = new SubmitSM();
    SubmitSMResp response;
    Session session;
    try {
        request.setSourceAddr(smsSource);
        request.setDestAddr(smsDestination);
        request.setShortMessage(smsMessage, "UTF-8");
        request.setRegisteredDelivery((byte) 3);
        request.setDataCoding((byte) 4); // 4
        request.assignSequenceNumber(true);
        response = ((Session) sd.get(smscNAME)).submit(request);
        logger.info("Submit response " + response.debugString());
        String messageId = response.getMessageId();       

        BigInteger bigInt = new BigInteger(messageId, 16);  

        return bigInt+"";
    } catch (WrongLengthOfStringException e) {
        logger.error(e);
        return null;
    } catch (PDUException e) {
        logger.error(e);
        return null;
    } catch (TimeoutException e) {
        logger.error(e);
        return null;
    } catch (WrongSessionStateException e) {
        logger.error(e);
        return null;
    } catch (IOException e) {
        logger.error(e);
        return null;
    }
}

誰か助けてください、ありがとう

4

1 に答える 1

1

データ コーディングを 0 (ネットワークのデフォルト) に設定し、プロバイダーがサポートする任意の文字セットで本文をエンコードします。推測する必要がある場合は、GSM のデフォルトの文字セットを使用します ( jcharsetにはエンコーダーが含まれています)。拡張文字セットが本当に必要な場合は、UTF-16BE を使用し、データ コーディングを 8 に設定します。

于 2016-12-02T10:15:20.307 に答える