[英]HTTP Status 415 - Unsupported Media Type error when passing data from ajax to restfull server as json
我正在尝试使用ajax作为json将数据发送到Restful服务。 但是有些事情做对了。 我得到这个错误
我读到那可能是因为我没有添加一些jar文件,所以这是我拥有的文件:
我的ajax函数如下所示:
var url1 = "../web.projekat/rest/korisnici/registracija";
$('#btnReg').click(function(){
var memail = document.getElementById('email').value;
var mkorIme = document.getElementById('korIme').value;
var mpass = document.getElementById('pass1').value;
$.ajax({
type : 'POST',
url : url1,
contentType : 'application/json;charset=utf-8',
dataType : "text",
data : formToJSON(mkorIme, mpass, "ds", "dsdsd", "Menadzer", "06315487", memail, "dsds"),
success : function(){
alert("Success");
},
error : function(){
alert("Error");
}
});
});
});
function formToJSON(korIme, lozinka, ime, prezime, uloga, telefon, email, slika) {
return JSON.stringify({
"korIme" : korIme,
"lozinka": lozinka,
"ime": ime,
"prezime": prezime,
"uloga": uloga,
"telefon": telefon,
"email" : email,
"slika": slika,
});
}
我的html文件格式如下:
<form action="../web.projekat/rest/korisnici/registracija" id="regForm" method="post">
<div class="form_container">
<div id="email_div">
<input type="text" id="email" placeholder="Email adresa">
<span class="error">Unesite validnu email adresu.</span>
</div>
<div id="korIme_div">
<input id="korIme" type="text" placeholder="Korisnicko ime">
<span class="error">Unesite korisnicko ime.</span>
</div>
<div id="pass1_div">
<input id="pass1" type="password" placeholder="Lozinka">
<span class="error">Unesite lozinku.</span>
</div>
<div id="pass2_div">
<input id="pass2" type="password" placeholder="Ponovite lozinku">
<span class="error">Unesite lozinku ponovo.</span>
</div>
<input id="btnReg" type="submit" value="Registruj se">
<p>Vec ste registrovani? <a href="prijava">Prijavite se.</a></p>
</div>
</form>
我的web.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>web.projekat</display-name>
<welcome-file-list>
<welcome-file>html/registration_form.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>controller</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
最后,我的休息服务类如下所示:
@Path("/korisnici")
public class KorisnikServis {
@Context
HttpServletRequest request;
@Context
ServletContext ctx;
@POST
@Path("/registracija")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces(MediaType.TEXT_PLAIN)
public String registracija(Korisnik data) {
return "sdasd";
}
}
当参数为Korisnik data时 ,不返回任何内容,当我将其更改为String数据时,它将返回数据。
我的Korisnik类具有所有参数, 构造函数,getter和setter。
那么,为什么我的应用程序无法识别发送给json屁股的数据? 它返回HTTP状态415-不支持的媒体类型错误。 谢谢您的帮助。
更新
我的Korisnik班级代码
public class Korisnik {
public String kor_ime;
public String lozinka;
public String ime;
public String prezime;
public String uloga;
public String telefon;
public String email;
public String slika;
public Korisnik(){}
public Korisnik(String kor_ime, String lozinka, String ime, String prezime, String uloga, String telefon, String email,
String slika) {
super();
this.kor_ime = kor_ime;
this.lozinka = lozinka;
this.ime = ime;
this.prezime = prezime;
this.uloga = uloga;
this.telefon = telefon;
this.email = email;
this.slika = slika;
}
public String getKor_ime() {
return kor_ime;
}
public void setKor_ime(String kor_ime) {
this.kor_ime = kor_ime;
}
public String getLozinka() {
return lozinka;
}
public void setLozinka(String lozinka) {
this.lozinka = lozinka;
}
public String getIme() {
return ime;
}
public void setIme(String ime) {
this.ime = ime;
}
public String getPrezime() {
return prezime;
}
public void setPrezime(String prezime) {
this.prezime = prezime;
}
public String getUloga() {
return uloga;
}
public void setUloga(String uloga) {
this.uloga = uloga;
}
public String getTelefon() {
return telefon;
}
public void setTelefon(String telefon) {
this.telefon = telefon;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSlika() {
return slika;
}
public void setSlika(String slika) {
this.slika = slika;
}
@Override
public String toString() {
return "Korisnik [kor_ime=" + kor_ime + ", ime=" + ime + ", prezime=" + prezime + "]";
}
}
在AJAX请求中,您将dataType
指定为文本,这就是为什么Web服务仅接受String的原因。 将您的dataType
更改为application/json
。
编辑:
这实际上是错误的,您可能会看到另一个错误。 您应该尝试将AJAX请求中的contentType设置为application/json
(删除;charset=utf-8
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.