我正在尝试使用Springframework的RestTemplate构建一个休息客户端,但问题是我的api是Camunda Rest Api。
这意味着我只能通过JSONObject
发送Camunda.bpm的postForObject
类型,但我的JacksonJsonConverter
仅解析javax的JsonObject
。
我得到了
no message converter found for the request type camunda JSONObject
或
当我分别使用bad media type
类型和JSONObject
类型时, JsonObject
例外。
春天的新事物被困了几天,任何人都可以帮忙吗?
答案 0 :(得分:0)
在对MappingJackson2HttpMessageConverter如何实际工作并仔细研究Camunda REST API的请求内容格式进行一些研究之后,我发现问题在于Jackson转换器无法解析任何不以ArrayList start token开头的内容“[ ”。因为我必须按照Camunda的要求传递带有开头标记“{”的请求,所以我编写了自己的Jackson转换器。具体来说,我重写了Jackson2中的readJavaType()方法:
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
try {
String parseInput = "["+convertStreamToString(inputMessage.getBody())+"]";
InputStream stream = new ByteArrayInputStream(parseInput.getBytes(StandardCharsets.UTF_8));
return this.objectMapper.readValue(stream, javaType);
}
catch (IOException ex) {
throw new HttpMessageNotReadableException("Could not read JSON: " + ex.getMessage(), ex);
}
}