REST服务中的Ajax请求中的null响应

时间:2014-05-09 18:49:45

标签: jquery ajax rest

我正在尝试测试由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请求中的数据不会发送到服务。知道这有什么问题吗?

2 个答案:

答案 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/plainMediaType.TEXT_PLAIN

更改服务期望的类型

@Consumes(MediaType.APPLICATION_JSON)

以及contentType: $.ajax

请求中的"application/json"