Sqlite3: Как URLEncode результаты запроса? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть система, в которой он подключается к SMS-шлюзу. Я использую sqlite3 для подключения к базе данных шлюза. Система подключается к шлюзу и получает сообщения, а затем сохраняет их в базе данных Oracle. Моя проблема в том, что формат сообщений исчезает, когда я устанавливаю значения сообщения для объекта. Есть ли способ закодировать сообщение в запросе?

Я пытался сделать это: SELECT URLENCODE(*) FROM SMSRECV;

Я знаю, что это неправильная функция, но я все еще пытался, потому что я действительно не могу найти способ

Подключение к шлюзу через ssh

private String getSmsDump() {

        StringBuilder sb = new StringBuilder();

        try {

            String command = "sqlite3 /persistent/var/lib/asterisk/db/MyPBX.sqlite \".read /persistent/script/cwms/smsrecv_html.sqlc\"";
            String host = this.sshHost;
            String user = this.sshUser;
            String password = this.sshPassword;
            int port = this.sshPort;

            JSch jsch = new JSch();
            Session session = jsch.getSession(user, host, port);
            Properties config = new Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.setPassword(password);
            session.connect();

            Channel channel = session.openChannel("exec");
            ((ChannelExec) channel).setCommand(command);
            channel.setInputStream(null);
            ((ChannelExec) channel).setErrStream(System.err);

            InputStream input = channel.getInputStream();
            channel.connect();

            try {
                InputStreamReader inputReader = new InputStreamReader(input);
                BufferedReader bufferedReader = new BufferedReader(inputReader);
                String line = null;

                while ((line = bufferedReader.readLine()) != null) {

                    sb.append(line);
                }

                bufferedReader.close();
                inputReader.close();

            } catch (Exception ex) {
                LOGGER.error("BUFFERED READER ERROR: "+ex);
            }

            channel.disconnect();
            session.disconnect();

        } catch (JSchException | IOException ex) {

            LOGGER.error("SSH CONNECTION ERROR: "+ex);
        }

        return sb.toString();

    } // end getSmsHtmlDump()

Установка значений для объекта:

  public List<SmsMessage> getSmsMessages() {

        List<SmsMessage> result = new ArrayList();
        String smsDump = getSmsDump();
        String received = "RECEIVED";
        String status = "1";
        if (null != smsDump) {
            Document messageDump = Jsoup.parse("<html><head></head><body><table>" + smsDump + "</table></body></html>");
            Elements rows = messageDump.getElementsByTag("tr");
            String hasRead = "0"; //no
            // Lambda expression for iterating row elements
            rows.stream().map((Element row) -> {
                SmsMessage message = new SmsMessage();
                Elements cols = row.getElementsByTag("td");
                message.setMessageId(cols.get(0).text());   // Message ID
                message.setSender(cols.get(1).text());      // Sender
                message.setSmsc(cols.get(2).text());        // SMSC
                message.setPortId(cols.get(3).text());      // Port ID
                message.setContent(cols.get(4).text());  
                                LOGGER.debug(cols.get(4).text());// Content
                message.setReceiveTime(cols.get(5).text()); // Receive Time
                message.setHasRead(hasRead);    // Has Read
                message.setTypeOfMessage(received);
                message.setMessageStatus(status);
                return message;
            }).forEachOrdered((message) -> {
                result.add(message);
                //LOGGER.debug(message.toString());
            });
        }

        return result;

    } // end getSmsMessages()

Содержимое файла smsrecv_html.sqlc:

.mode html
SELECT * FROM SMSRECV;

Я просто хочу установить значения для объекта, не удаляя формат

Надеюсь, вы могли бы помочь мне.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...