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

标签 android rest jersey tomcat7

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 注释是没有意义的,因为这通常只用于 PUTPOST 请求客户端向服务器发送一些内容。 你能删除这个吗?

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

headers.setContentType(MediaType.APPLICATION_JSON);

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

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

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

关于android - HTTP 状态 405 - 方法不允许(jax-rs 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276719/

相关文章:

java - Appium 在使用 xPath 查找时查找错误的元素

javascript - REST JavaScript 客户端

java - 简单的 Java OAuth 示例

mongodb - 为什么一个 HTTP GET 请求检索所需的数据而另一个检索 []

Spring+Jersey 事务注解

android - Android 源代码中的@hide 是什么意思?

android - 经纬度为已知点计算100米距离

android - BitmapFactory 中出现内存不足错误

java - 将返回类型从列表更改为响应后,RestRessource 不再工作

java - 为什么使用 Jersey 客户端进行 POST 调用时出现 400 错误代码