HTTP状态405 - 方法不允许(jax-rs服务)

4
Jax-rs服务返回HTTP状态码405 - 不允许的方法。
服务:
@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);

 }
1个回答

2
服务器上的@GET方法不需要使用@Consumes注释,因为这通常仅用于客户端向服务器发送内容的PUTPOST请求。
请移除此注释。
然后也从客户端代码中移除它。
headers.setContentType(MediaType.APPLICATION_JSON);

你可能需要取消注释你已经注释的行:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接