4

Jax-rs 服务返回HTTP 状态 405 - Method Not Allowed

服务:

@GET
@Consumes(MediaType.TEXT_HTML)
@Produces(MediaType.APPLICATION_JSON)
@Path("login")
public User Login(@QueryParam("u") String username, @QueryParam("p") String password) {
   return UserDAO.getInstance().getLogin(username,password)
}

安卓:

 public static Boolean Login(User user) {
     String url = "http://myserver.com/AndroidServis/rest/login?u={u}&p={p}";
     RestTemplate restTemplate = new RestTemplate();

     HttpHeaders headers = new HttpHeaders();
     headers.setContentType(MediaType.APPLICATION_JSON);
     
     HashMap<String, String> params = new HashMap<String, String > ();
     params.put("u", user.getUsername().toString());
     params.put("p", user.getPassword().toString());

     HttpEntity entity = new HttpEntity(headers);

     restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
     restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
     HttpEntity < Korisnici > response = restTemplate.exchange(url, HttpMethod.GET, entity,User.class, params);

 }
4

1 回答 1

2

@Consumes服务器在方法上添加注释是没有意义的@GET,因为这通常仅用于客户端向服务器发送某些内容PUTPOST请求。你能去掉这个吗?

然后也从客户端代码中删除它。

headers.setContentType(MediaType.APPLICATION_JSON);

并且您可能需要取消注释已注释掉的行:

headers.set("Accept", "application/json");

这告诉服务器响应中预期的内容类型,因此必须与服务的 @Produces 匹配。

于 2013-03-07T23:44:47.100 回答