Android HTTP状态405-不允许使用方法(jax rs服务)
Jax rs服务返回HTTP状态405-不允许使用方法 服务:Android HTTP状态405-不允许使用方法(jax rs服务),android,rest,jersey,tomcat7,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 U
@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);
}
Android:
@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);
}
公共静态布尔登录(用户){
字符串url=”http://myserver.com/AndroidServis/rest/login?u={u} &p={p}”;
RestTemplate RestTemplate=新RestTemplate();
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HashMap params=newhashmap();
参数put(“u”,user.getUsername().toString());
参数put(“p”,user.getPassword().toString());
HttpEntity=新的HttpEntity(标题);
restemplate.getMessageConverters().add(新的GsonHttpMessageConverter());
restemplate.getMessageConverters().add(新的StringHttpMessageConverter());
HttpEntityresponse=restemplate.exchange(url、HttpMethod.GET、entity、User.class、params);
}
服务器在@GET
方法上有@Consumes
注释是没有意义的,因为这通常仅用于客户端向服务器发送某些内容的PUT
或POST
请求。
你能把这个拿走吗
然后从客户机代码中删除它
headers.setContentType(MediaType.APPLICATION_JSON);
您可能需要取消注释已注释掉的行:
headers.set("Accept", "application/json");
这会告诉服务器响应中预期的内容类型,因此必须与@生成的服务相匹配