Джексон XmlMapper - PullRequest
       2

Джексон XmlMapper

0 голосов
/ 31 октября 2019

У меня есть рабочий метод, который использует Джексона для публикации данных в формате JSON.

Я в основном скопировал этот метод, изменив ObjectMapper на XmlMapper. Я также изменил RequestProperty с application/json на application/xml

   private static void post_xml_to_url(Logger logger, Object infoToPost, URL url, String user, String psw) throws JsonProcessingException, MalformedURLException, IOException, NoSuchAlgorithmException, KeyManagementException {
    logger.log(Level.INFO, "Posting Ticket..");

    XmlMapper mapper = new XmlMapper(); //Chang back to use JSON
    mapper.enable(SerializationFeature.INDENT_OUTPUT);

    byte[] val = mapper.writeValueAsBytes(infoToPost);//Error is thrown here
    System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(infoToPost));
    HttpsURLConnection con = null;
    try {
        disableCertificateValidation();


        con = (HttpsURLConnection) url.openConnection();
        String encoding = Base64.getEncoder().encodeToString((user + ":" + psw).getBytes("UTF-8"));
        con.setRequestProperty("Authorization", String.format("Basic %s", encoding));
        con.setDoOutput(true);
        con.setDoInput(true);
        con.setRequestProperty("Content-Type", "application/xml; charset=UTF-8");
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", "Java client");

        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.write(val);

        StringBuilder content;
        try (BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()))) {

            String line;
            content = new StringBuilder();

            while ((line = in.readLine()) != null) {
                content.append(line);
                content.append(System.lineSeparator());
            }

        }

    } finally {
        con.disconnect();
    }

}

Кажется, есть некоторые проблемы с зависимостями

Исключение в потоке "main" java.lang.NoSuchMethodError:com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.getOutputContext () Lcom / fasterxml / джексон / ядро ​​/ JSON / JsonWriteContext;в com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.close (ToXmlGenerator.java:951) в com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue (ObjectMapper.jack:3911) в com.fasterxml. .ObjectMapper.writeValueAsBytes (ObjectMapper.java:3244)

Мне сложно понять, какие JAR-файлы мне нужны для решения этой проблемы. Что мне не хватает?

Я приложил скриншот текущих файлов в моей библиотеке:

Current Libraries

1 Ответ

0 голосов
/ 31 октября 2019

Исключение указывает, что в com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator отсутствует метод getOutputContext ().

Возможно, вы используете неправильную версию этого класса.

Сначала определите, в какой банке содержится класс. Вы можете сделать это, запустив jar -tf на каждом из jar-файлов вашей библиотеки, или у вашей IDE может быть более простой способ сделать это.

Как только вы найдете jar-файл, содержащий класс, найдите API для онлайнэтой библиотеки и определите, какая версия необходима для предоставления отсутствующего метода.

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