Apache Tika BodyContentHandler () пусто - PullRequest
0 голосов
/ 02 мая 2018

Я использую Apache Tika 1.18, и когда я использую один фреймворк веб-сервиса (sparkjava), код ниже работает. Тем не менее, в SpringBoot строка кода BodyContentHandler () пуста. Таким образом, мой возвращенный текст пуст.

Не уверен, что с этим, но был бы признателен за любые предложения.

Я передаю в этот код строку в кодировке Base64, а также в кодировке URLE. Таким образом, эти два декодируют как первые две строки.

Запуская этот код в отладчике в SpringBoot, содержимое переменной имеет те же значения, что и в sparkjava, но как только я попаду в BodyContentHandler (), вместо того, чтобы иметь входной текст, который есть в версии sparkjava для переменной-обработчика, Версия SpringBoot имеет "" для обработчика.

Я также проверил это поведение с Тика 1.17. Так же. Также попытался удалить параметр -1 из нового конструктора BodyContentHandler (). То же самое.

Заранее спасибо.


Строка "data =" передана в метод SpringBoot POST.

String bodyData = URLDecoder.decode(data.substring(data.indexOf("data=") + 5));
        byte[] decodedBodyData = java.util.Base64.getMimeDecoder().decode(bodyData);

        Tika tika = new Tika();

        try
        {
            Parser parser = new AutoDetectParser();

            // line of code below returns "". Problem!
            BodyContentHandler handler = new BodyContentHandler(-1); // handle larger files.

            Metadata metadata = new Metadata();
            InputStream inputStream = new ByteArrayInputStream(decodedBodyData);
            ParseContext context = new ParseContext();

            //parsing the file
            parser.parse(inputStream, handler, metadata, context);
            textToReturn = handler.toString();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (SAXException e)
        {
            e.printStackTrace();
        }
        catch (TikaException e)
        {
            e.printStackTrace();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
...