REST Web服务(JERSEY)中POST HTTP请求的过程参数

|| 我正在GAE上开发REST Web服务。我正在使用Jersey框架来实现服务。这是POST服务,我还必须传递参数。我尝试使用两种类型的注释,但无法获取参数: @上下文
@POST
@Path(\"add\")
@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Notification addUser(@Context UriInfo uriInfo){
    MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
    String nickname = queryParams.getFirst(\"nickname\");
    String name = queryParams.getFirst(\"name\");
    String surname = queryParams.getFirst(\"surname\");
    String telephone = queryParams.getFirst(\"telephone\");
    String email = queryParams.getFirst(\"email\");
    User =createUser(nickname, name, surname, telephone, email);

    .......
}
@QueryParam
@POST
@Path(\"add\")
@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Notification addUser(@QueryParam(\"nickname\") String nickname, @QueryParam(\"name\") String name, @QueryParam(\"surname\") String surname, @QueryParam(\"telephone\") String telephone, @QueryParam(\"email\") String email) {
    User =createUser(nickname, name, surname, telephone, email);
    ......
}
但是在两种情况下我都无法获取所有参数均为空值。 这是我的http请求的示例:
Request URL: http://windyser.appspot.com/rest/users/add
Request Method: POST
Params: {\"nickname\":\"prova\",\"name\":\"danilo\",\"surname\":\"delizia\",\"email\":\"prova@yahoo.it\",\"telephone\":\"123\"}
Sent Headers
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en
有人知道我是否想念什么吗? 在此先感谢您的帮助 达尼洛     
已邀请:
        Jetty 8.x支持Java EE 6,而Jetty 7.x仅支持Java EE 5。 我从第一个代码段中看到,您使用Java EE 6中的\“ @ Produces \”批注。这一定是问题所在。 修理: 确保您使用的是与Jetty 8.x捆绑在一起的GAE SDK,以支持注释-或者- 仅使用Java EE 5功能。 [编辑] 让服务知道您需要使用String参数。尝试使用@Consumes运行时批注:
@POST
@Path(\"/add\")
@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes(\"application/x-www-form-urlencoded\") // to consume String parameters
public Notification addUser(@FormParam(\"nickname\") String nickname) {        
    ......
}
如果您需要访问该服务,则下一步:
URL url = new URL(\"http://[HOST]:[PORT]/[CONTEXT]/?nickname=prova\"); // Your parameter
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(\"POST\");
conn.connect();            

// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
    System.out.println(line); // Your service\'s response
}
rd.close();
conn.disconnect()
希望这可以帮助。     

要回复问题请先登录注册