我正在尝试测试由java编写的简单REST服务。
服务器:
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.apache.catalina.startup.Tomcat;
@Path("/Service")
public class WebServiceResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/getname")
public String getName(){
return "WEB";
}
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
@Path("/getservice")
public String getService(@QueryParam("name") String name){
return name +" Welcome!";
}
}
,客户端是一个带有此脚本的简单html页面:
<script>
$(document).ready(function(){
$.ajax({url:"http://localhost:8080/RESTService_TomCat7/Service/getservice",contentT ype:"text/plain",dataType:"text",data:
{name:"MMMMMM"},processData:false,type:"POST"});
});
</script>
如果一切顺利,我应该得到这个回复MMMMMM Welcome!
,但我得到null Welcome!
。似乎ajax请求中的数据不会发送到服务。知道这有什么问题吗?
答案 0 :(得分:0)
尝试更改contentType和dataType
$(document).ready(function(){
$.ajax({url:"http://localhost:8080/RESTService_TomCat7/Service/getservice",
contentType:"application/json",
dataType:"json",
data:{name:"MMMMMM"},
processData:false,
type:"POST"
});
});
您还需要更改Java代码中的注释:
@Consumes(MediaType.APPLICATION_JSON)
答案 1 :(得分:0)
您发送的请求数据为application/json
,但您的服务期待text/plain
(MediaType.TEXT_PLAIN
)
更改服务期望的类型
@Consumes(MediaType.APPLICATION_JSON)
以及contentType:
$.ajax
"application/json"