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

springmvc@RequestBody给出了415个错误

谭勇
2023-03-14

无论我尝试什么,发送给dispatcher servlet的请求都会返回HTTP 415错误。请求中将内容类型设置为application/json。

消息转换器似乎没有将请求映射到对象。

我的POM中有所有Jackson依赖项:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-databind-version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jaxb-annotations</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xbean</groupId>
        <artifactId>xbean-spring</artifactId>
        <version>3.7</version>
    </dependency>

控制器类:

@RequestMapping(value = "/login", method = RequestMethod.POST, headers = {"Accept=application/json"}, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public DriverLoginResponseDTO login(@RequestBody MyDTO dto)
{
    System.out.println("login method hit!");
    LoginResponseDTO resp = null;

    try {
        resp = loginService.processLogin(dto);
    }
    catch (Exception cde) {
        resp = new LoginResponseDTO();
        resp.setMessage("ERROR");
    }

    // Return response object
    return resp;
} // login

我试图在@刚需映射中添加接受、消费、生产,但没有成功。

我可以使用HttpServletRequest作为方法参数获得正确的JSON响应:

@RequestMapping(value = "/login3", method = RequestMethod.POST)
@ResponseBody
public DriverLoginResponseDTO login3(HttpServletRequest request)
{
    String line;
    StringBuilder sb = new StringBuilder();

    InputStream is;
    try {
        is = request.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println("login3 method hit!");
    System.out.println("JSON string received: " + sb.toString());

    LoginResponseDTO resp = null;

    try {
        resp = loginService.processLogin(new MyDTO());
    }
    catch (Exception cde) {
        resp = new LoginResponseDTO();
        resp.setMessage("ERROR");
    }

    // Return response object
    return resp;
} // login

这一个在写入系统时显示正确的JSON字符串。出来在上面的第一个“login”方法中,有些东西没有将JSON请求映射到RequestBody对象,但我看不出缺少什么。

我不知道这是否相关,但Websphere也抛出了以下错误:

SRVE8094W:警告:无法设置标题。答复已经提交。

共有1个答案

廖招
2023-03-14

@RequestMapping

 类似资料:
  • 我的控制器中有以下内容: 为: 我得到以下错误: 请注意,我已经安装了Jackson(来自这个问题:Jackson Databind类路径问题)。 此外,我可以很好地使用,但是当我尝试使用时,它就会给我带来这个错误。 如何使@RequestBody成为UserEntity?

  • 错误:任务“:app:CompileFlutterBuildDebug”执行失败。 进程“command”d:\flutter\bin\flutter.bat“已完成,退出值为非零%1 > 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获得完整的见解。

  • 输出在这里。 java版本为 在Android Studio的项目结构中,我无法设置JavaSDK,如下所示。 我在试图解决这个问题的时候在互联网上发现了这个问题和其他很多问题,但我还没有找到解决方案。谁能帮我修一下这个吗。

  • 我在摆弄弹力靴,但每向前走一步,就会让我后退两步。 我将我的简单应用程序与Springboot连接在一起,但我没有得到这个错误: 还有这一点: 我不用任何数据库。应用程序非常简单。下面是主要的类: 下面是其他两个类和: 就是这样。尽管它可能很简单。 下面是文件结构以及build.gradle文件内容: 能有人请帮助我让这个小程序运行,指出我在正确的方向,以解决这个问题? 事先好心谢谢你。

  • 我目前正在做一个项目,我需要向spring发送一个POST请求。我已经找了好几个小时的解决方案,但没有找到一个可行的。当我开发该部件时,请求起了作用。问题是,在创建一些新功能(另一个控制器中有两个新endpoint)后,用于创建或更新实体的POST请求停止工作,而不会更改特定区域中的代码。 控制器: 最初,关于消费和生产的部分不在那里,我尝试了它,因为在其他帖子上看到了它,但对情况没有帮助。 传感

  • 我在这一行得到一个错误: [cgi:error][pid 8213][client 151.56.154.134:58848]AH01215:PHP警告:preg_replace_callback():要求参数2、“\u utf8_to_html(“\1”)在/home/informag/public_html/filename中是有效的回调。第951行的php:/usr/local/cpanel