簡體   English   中英

將POST請求發送到REST API時出現415錯誤

[英]415 error when sending POST request to REST API

我正在JavaEE中開發REST API,並在ReactJS中使用該API開發客戶端。

當我使用郵遞員時,該API可以完美運行,但是一旦我在JS中使用fetch方法通過客戶端發布JSON信息,就會收到415錯誤:瀏覽器控制台中的媒體類型不受支持。

對於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仍不接受它,或者將其作為應用程序/八位字節流接收媒體類型。

這是完成提取的方法:

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

如果有人可以解決我的問題或已經解決了該問題,請告訴我,以便我最終可以繼續進行該項目。

先感謝您,

亞瑟

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

嘗試改變

@Consumes(MediaType.APPLICATION_JSON)

@Consumes(MediaType.APPLICATION_JSON_VALUE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM