我的 Spring 框架上的 HttpMessageNotReadableException 错误

发布时间:2021-03-08 12:59

我想使用 spring 框架将一个对象发送到我的数据库。这是我在控制器中的代码:

    @PostMapping("/createBarangByJson")
public ResponseEntity<?> createBarangByJson(@RequestBody RequestUser body)
{
    Integer cDet = crudService.simpleCreateByJson(body);
    return ResponseEntity.ok(cDet);
}

}

我已经为请求类创建了 setter getter,这是我在 DaoImpl 中的代码:

    @Override
public Integer simpleCreateByJson(RequestUser reqUser)
{
    String sql = "INSERT INTO public.jualbeli(nama_barang, kuantitas, harga, tanggal, created_by) VALUES (?,?,?,?,?)";
    Integer result = jdbcTemplate.update(sql, reqUser.getNama_barang(), Integer.parseInt(reqUser.getKuantitas()), Integer.parseInt(reqUser.getHarga()), reqUser.getTanggal(), reqUser.getCreated_by());
    return result;
}

但是当我发送此数据时:

[
{
    "nama_barang": "buku",
    "kuantitas": "17",
    "harga": "500000",
    "tanggal": "2020-08-01",
    "created_by": "adit"
}

]

错误说:

"timestamp": 1615207817069,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException"

有人知道怎么回事吗?

回答1

您正在发送一个 JSON 数组:

[{
    "nama_barang": "buku",
    "kuantitas": "17",
    "harga": "500000",
    "tanggal": "2020-08-01",
    "created_by": "adit"
}]

您需要发送

{
    "nama_barang": "buku",
    "kuantitas": "17",
    "harga": "500000",
    "tanggal": "2020-08-01",
    "created_by": "adit"
}

你也应该要求

@PostMapping(path="/createBarangByJson", consumes="application/json") 

代替

@PostMapping("/createBarangByJson")