Android HTTP PUT 未向服务器发送 JSON 请求,导致 HTTP 405 方法不允许。
下面是我的异步任务后台代码
HttpClient httpclient = new DefaultHttpClient();
HttpPut httpPut = new HttpPut("URL");
String jsonresponse = "";
try {
StringEntity se = new StringEntity(gson.toJson(resultPojo).toString());
se.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
httpPut.setEntity(se);
httpPut.setHeader("Accept", "application/json");
httpPut.setHeader("Content-type", "application/json");
HttpResponse response = httpclient.execute(httpPut);
HttpEntity httpEntity = response.getEntity();
jsonresponse = EntityUtils.toString(httpEntity);
System.out.println("res .... "+jsonresponse);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
服务器端代码:
@POST
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response submitUserResponse(@PathParam("userId") int userId,
@PathParam("id") int id, List<ResultPojo> responses) {
try {
//core logic goes here
return Response.status(Response.Status.CREATED).build();
} catch (Exception e) {
e.printStackTrace();
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
}
最佳答案
好吧,正如所讨论的那样,很可能是不同的 HTTP 方法不匹配,在这种情况下是 A Put 和 post,每当您遇到 HTTP 代码 (405) 确实对您使用的方法执行验证时,它就会发生.405 错误通常出现在 POST 方法中。您可能试图在网站上引入某种输入表单,但并非所有 ISP 都允许处理该表单所必需的 POST 方法。所请求的资源不支持请求方法;例如,对需要通过 POST 呈现数据的表单的 GET 请求,或对只读资源的 PUT 请求。
关于Android HTTP PUT 不向服务器发送 JSON 请求导致 HTTP 405 方法不允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458717/