![](/img/trans.png)
[英]HTTP Error 415 when sending POST request with JSON data from HTML to Java Rest web service
[英]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.