2013-03-07 79 views
3

我有问题jax-rs服务,服务返回HTTP状态405 - 方法不允许。 我从android项目调用serice。HTTP状态405 - 不允许的方法(jax-rs服务)

这里是我的代码:

服务:

@GET 
@Consumes(MediaType.TEXT_HTML) 
@Produces(MediaType.APPLICATION_JSON) 
@Path("login") 
public Korisnici Login(@QueryParam("u") String username,@QueryParam("p") String password){ 

    Korisnici exception = new Korisnici(); 
    try { 

     for (Korisnici obj : KorisniciDAO.getInstance().getAll()) { 

      if (obj.getUsername().equals(username) 


        && obj.getPassword().equals(password)) { 


       return obj; 

      } 
     } 

     return new Korisnici(); 

    } catch (Exception e) { 

     exception.setIme(e.toString()); 
     return exception; 
    } 

} 

代码在android系统:

public static Boolean Login(Korisnici k) { 


String url = "http://myserver.com/AndroidServis/rest/korisnik_servis/login?u={u}&p={p}"; 


     restTemplate = new RestTemplate(); 

      headers = new HttpHeaders(); 
      //headers.set("Accept", "application/json"); 
      headers.setContentType(MediaType.APPLICATION_JSON); 
      params = new HashMap<String, String>(); 
      params.put("u", k.getUsername().toString()); 
      params.put("p", k.getPassword().toString()); 

      entity = new HttpEntity(headers); 

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

      } 

我不知道在哪里的问题。

回答

1

它没有意义的服务器对@GET方法@Consumes注解,因为这通常仅用于PUTPOST请求,其中客户端发送一些内容到服务器。 你可以删除它吗?

然后从客户端代码中删除这个。

headers.setContentType(MediaType.APPLICATION_JSON); 

,您可能需要取消注释注释掉行:

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

这告诉有望在响应哪些内容类型,因此必须与服务的什么@Produces匹配服务器。

相关问题