我想通过以下操作测试异常处理程序:
当我尝试执行此操作时,我的bodyToMono(String.class)请求出现错误:
Content type 'application/json' not supported for bodyType=java.lang.String
这是我的异常处理程序:
@Component
@Order(-2)
public class ExceptionResolver extends AbstractErrorWebExceptionHandler {
public ExceptionResolver(ErrorAttributes errorAttributes, ResourceProperties resourceProperties, ApplicationContext applicationContext, ServerCodecConfigurer configurer) {
super(errorAttributes, resourceProperties, applicationContext);
this.setMessageWriters(configurer.getWriters());
}
@Override
protected RouterFunction<ServerResponse> getRoutingFunction(
ErrorAttributes errorAttributes) {
return RouterFunctions
.route(RequestPredicates.all(), request ->
request.bodyToMono(String.class).log()
.doOnError(e -> {
System.out.println("errored :(");
System.out.println(e.getMessage());
}).flatMap(r -> ServerResponse.ok().contentType(MediaType.APPLICATION_XML).syncBody(r)));
}
我在做什么错?我希望可以将任何类型的有效载荷提取为String.class。
答案 0 :(得分:0)
我认为错误消息的答案很简单。您尝试将响应返回为appication / json,可能是因为您正在向响应添加内容类型标头,或者因为响应的默认内容类型是this,但是您试图返回的XML不适合json模式,它会崩溃