我有一个有效的方法,该方法使用Jackson来发布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();
}
}
似乎存在一些依赖问题
线程“主”中的异常java.lang.NoSuchMethodError:com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.getOutputContext()Lcom / fasterxml / jackson / core / json / JsonWriteContext; 在com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.close(ToXmlGenerator.java:951) 在com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3911) 在com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3244)
我很难弄清楚我需要解决哪个JAR文件。我想念什么?
我已附上图书馆中当前文件的屏幕截图:
答案 0 :(得分:1)
我有类似的错误。我发现我有不同版本的:
更新到类似版本后问题消失。 使用您的构建包工具列出您的库 jar 版本。
例如,运行以下命令之一以正确显示当前的 jar 依赖项:
后者也解决了当前的 maven 冲突。希望我的回答能帮到你!
答案 1 :(得分:-1)
该异常指出com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator缺少方法getOutputContext()。
您可能使用了错误的此类。
首先,确定哪个jar包含该类。您可以通过在库中的每个jar上运行jar -tf来执行此操作,否则您的IDE可能会更简单。
一旦找到包含该类的jar,就可以在线找到该库的API,并确定提供缺少的方法所需的版本。