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

时间:2018-01-13 18:26:46

标签: java json api post fetch

我正在JavaEE中开发REST API,并在ReactJS中使用此API开发客户端。

当我使用postman时,API工作得很好,但是只要我在JS中使用fetch方法通过我的客户端发送JSON信息,我就会收到415错误:我的浏览器控制台中有不支持的Mediatype。

对于API,我使用Jersey来处理请求,使用Hibernate作为ORM。我有genson依赖,正如我所说,everythig与Postman完美搭配。 我在发送它之前还检查了JSON.stringify()的结果,它看起来很好。

另外,在我服务器的控制台中,每当我尝试发布任何内容时,我都会收到此错误:

GRAVE: A message body reader for Java class model.User, and Java type class model.User, and MIME media type application/octet-stream was not found.

我检查并仔细检查了所有内容,我发送了正确的标题,浏览器将请求标识为'application / json'内容类型,但它就像我的API仍然不接受它,或者接收它作为应用程序/ octet-stream mediatype。

以下是完成提取的方法:

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();
}

如果有人对我的问题有答案或者已经面对它,请告诉我,这样我终于可以继续推进这个项目了。

提前谢谢你,

亚瑟

1 个答案:

答案 0 :(得分:0)

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

尝试更改

@Consumes(MediaType.APPLICATION_JSON)

@Consumes(MediaType.APPLICATION_JSON_VALUE)