当前位置: 首页 > 知识库问答 >
问题:

由于不支持的媒体类型,无法在ExceptionHandler中获取ServerRequest正文

方韬
2023-03-14

我想通过执行以下操作来测试异常处理程序:

  • 发送一个带有XML负载的请求,该负载可以在我的应用程序中作为有效对象取消编组

当我尝试这样做时,我的bodyToMono(String.class)请求出错:

内容类型'Application/json'不支持body Type=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)));
    }

我做错了什么?我希望任何类型的负载都可以提取为字符串。班

共有1个答案

裴学
2023-03-14

关于错误消息,我认为答案很简单。您试图将响应作为应用程序/json返回,可能是因为您正在向响应中添加内容类型标头,或者因为响应的默认内容类型为this,但您试图返回不适合json模式的xml,结果它崩溃了

 类似资料:
  • 我必须做的是,我必须在给定的URL中发布JSON数据,其中JSON看起来像 和我的功能 当我张贴它的时候;我得到一个错误 “远程服务器返回错误:(415)不支持的媒体类型。” 有人知道吗;我错在哪里?

  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。

  • 我正在用Spring Boot构建一些API,但是当我试图用Postman查询时,我得到了一些关于Content-Type的错误。 我不明白哪里出了问题。 我注意到错误消失时,我删除了@刚体作为参数的方法。为什么啊? 我只想: 将XML发送到API

  • 问题内容: 我正在尝试使用jQuery 1.6(Jackson 2.1.1 和Spring 3.2.0 )通过JSON通过该方法向数据库中插入和/或更新数据。 JS代码如下。 通过URL映射的Spring控制器内部的方法如下。 服务器按照问题的含义进行响应, 415不支持的媒体类型 标头信息如下所示。 整个文件如下。 当我删除一个方法参数并仅用于接受请求参数时,它可以工作。 问题答案: 浏览器发送

  • 问题内容: 我正在使用Spring 3.2,并尝试使用ajax发布请求来提交json对象数组。如果相关,我转义了所有特殊字符。 我的HTTP状态为415。 我的控制器是: jQuery是: 我发布的数组中的对象之一的示例是以下json: 错误是: 为什么会发生此错误-有人知道吗? 问题答案: 您可以尝试使用。它没有任何问题