Openfire Rest APIからユーザーエンティティを取得中に、以下のエラーメッセージが表示されます。 (私は自分のApiエンドポイントをopenfire Restapiエンドポイントでラップしています。)
"エラー": "内部サーバーエラー"、 "例外": "org.springframework.http.converter.HttpMessageNotWritableException"、 "メッセージ": "JSONを書き込めませんでした:クラスJava.io.ByteArrayInputStreamのシリアライザーが見つかりませんでした。プロパティが見つかりませんBeanSerializerを作成するには(例外を回避するには、SerializationFeature.FAIL_ON_EMPTY_BEANSを無効にします);ネストされた例外はcom.fasterxml.jackson.databind.JsonMappingExceptionです:クラスJava.io.ByteArrayInputStreamのシリアライザーが見つかりません。 SerializationFeature.FAIL_ON_EMPTY_BEANS)(参照チェーンを通じて:com.mashape.unirest.http.HttpResponse [\ "rawBody \"]) "、" path ":"/usersInfo/user2 "
コードは次のとおりです。
String Host ="http://abdul01anpi01:9090" ;
String userEndPoint = "/plugins/restapi/v1/users" ;
String apiURL = Host+userEndPoint ;
HttpResponse<JsonNode> response =null;
response = Unirest.get(apiURL +"/{username}").header("accept", "application/json").header("Content-Type", "application/json").routeParam("username",String.valueOf(username)).asJson();
応答から予想される出力は次のとおりです。
{
"username": "user2",
"name": "user2",
"properties": null
}
親切に助言してください、どんな助けでもありがたいです。
動作します。ResourceHttpMessageConverterを追加してください!
@Configuration
public class EirExceptionConfig extends WebMvcConfigurerAdapter {
@Autowired
ObjectMapper objectMapper;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(EirException.class, new EirExceptionJackson2Serializer());
objectMapper.registerModule(simpleModule);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
converters.add(new ResourceHttpMessageConverter());
converters.add(converter);
}
}
ポスターは解決策を見つけてコメントに投稿しました。それは数年前なので、実際の答えとしてコピーする価値があるかもしれないと考えました:
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(
mapper);
return converter;
}
false
に設定されるフラグの説明を追加しましょう:
/**
* Feature that determines what happens when no accessors are
* found for a type (and there are no annotations to indicate
* it is meant to be serialized). If enabled (default), an
* exception is thrown to indicate these as non-serializable
* types; if disabled, they are serialized as empty Objects,
* i.e. without any properties.
*<p>
* Note that empty types that this feature has only effect on
* those "empty" beans that do not have any recognized annotations
* (like <code>@JsonSerialize</code>): ones that do have annotations
* do not result in an exception being thrown.
*<p>
* Feature is enabled by default.
*/
FAIL_ON_EMPTY_BEANS