我从 android项目调用serice.
这是我的代码:
服务:
@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); }
我不知道问题出在哪里.
解决方法 服务器在@GET方法上有@Consumes注释是没有意义的,因为这通常仅用于客户端向服务器发送一些内容的PUT或POST请求.你能删除吗?
然后还从客户端代码中删除它.
headers.setContentType(MediaType.APPliCATION_JsON);
并且您可能需要取消注释已注释掉的行:
headers.set("Accept","application/Json");
这告诉服务器响应中预期的内容类型,因此必须与服务的@Produces匹配.
总结以上是内存溢出为你收集整理的android – HTTP状态405 – 不允许的方法(jax-rs服务)全部内容,希望文章能够帮你解决android – HTTP状态405 – 不允许的方法(jax-rs服务)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)