Android HTTP PUT 不向服务器发送 JSON 请求导致 HTTP 405 方法不允许

标签 android json

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/

相关文章:

android - 从后台服务android查找当前位置

android - 按钮颜色不改变android studio 1.5.1

javascript - 使用 AngularJS 使用 $http 发布到服务器

javascript - 使用 jQuery 对记录进行分页

json - REST API 返回 "bad array"而不是 JSON 对象

ios - 无法从没有 ios 键的 Json 中获取值

android - 如何检查 Wowza 上的 LiveStream(仅限音频)是否已启动?

java - android getlastknownlocation 在模拟器中始终为空

使用 'ionic emulate android' 命令时 Android 模拟器不安装应用程序

php - fancytree 不加载 json 数据