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);
}
最佳答案
服务器在 @GET
方法上有一个 @Consumes
注释是没有意义的,因为这通常只用于 PUT
或 POST
请求客户端向服务器发送一些内容。
你能删除这个吗?
然后也从客户端代码中删除它。
headers.setContentType(MediaType.APPLICATION_JSON);
并且您可能需要取消注释您已注释掉的行:
headers.set("Accept", "application/json");
这告诉服务器响应中期望的内容类型必须与服务的@Produces 匹配。
关于android - HTTP 状态 405 - 方法不允许(jax-rs 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276719/