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。これは通常、クライアントがコンテンツをサーバーに送信するか、リクエストする場合にのみ使用されるためPUTですPOST。これを削除できますか?

次に、これもクライアント コードから削除します。

headers.setContentType(MediaType.APPLICATION_JSON);

コメントアウトした行のコメントを解除する必要がある場合があります。

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

これは、応答で期待されるコンテンツ タイプをサーバーに伝えるため、サービスの @Produces と一致する必要があります。

于 2013-03-07T23:44:47.100 に答える