json 向REST API发送POST请求时出现415错误

dsf9zpds  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(121)

我正在JavaEE中开发一个REST API,并在ReactJS中使用此API开发一个客户端。
当我使用postman时,API工作得很好,但是当我使用JS中的fetch方法通过客户端发布JSON信息时,我得到了一个415错误:
我的浏览器控制台不支持的媒体类型。
对于API,我使用Jersey处理请求,Hibernate作为ORM。我有genson依赖,正如我所说,一切都工作得很好与 Postman 。在发送之前我也检查了JSON.stringify()的结果,它看起来很好。
另外,在我的服务器的控制台,我得到这个错误,每次我试图张贴任何东西:
GRAVE:未找到Java类模型、用户和Java类型类模型、用户和MIME媒体类型application/octet-stream的消息正文读取器。
我检查并仔细检查了所有内容,我发送了正确的头部,浏览器将请求识别为“application/json”内容类型,但就像我的API仍然不接受它,或者将其作为application/octet-stream媒体类型接收。
下面是执行fetch的方法:

signIn(){
    console.log(JSON.stringify(this.state));
    fetch('http://localhost:8080/P52/users', {
                method: 'POST',
                body: JSON.stringify(this.state),
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json'
                }
            }).then(res => {
                return res.json();
            }).catch(err=>err)
}

字符串
API中接收数据的方法:

@POST
@Consumes(MediaType.APPLICATION_JSON)
public User createUser(User u){
    return UserController.createUser(u);
}


控制器只需要创建一个User类的新示例,以在User模型类中运行以下代码:

public User(User u){
    this.id = u.getId();
    this.pseudo = u.getPseudo();
    this.firstname = u.getFirstname();
    this.lastname = u.getLastname();
    Session session = (Session)HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    session.save(this);
    session.getTransaction().commit();
    session.close();
}


如果任何人有我的问题的答案或已经面临它,请让我知道,所以我可以最终推进这个项目。

baubqpgj

baubqpgj1#

415不支持的媒体类型(https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415
试着改变

@Consumes(MediaType.APPLICATION_JSON)

字符串

@Consumes(MediaType.APPLICATION_JSON_VALUE)

相关问题