在Servlets中获取OkHttp PUT请求参数

Get OkHttp PUT request parameters in Servlets

我正在使用我的 Android 应用中的 OkHttp 4.9.1 发出 PUT 请求,如下所示,

RequestBody reqBody = new FormBody.Builder()
        .add("name", name)
        .add("phone", phone)
        .build();

Request request = new Request.Builder()
        .url(API_URL)
        .put(reqBody)
        .build();

new OkHttpClient().newCall(request).enqueue(new Callback() {
    ...
});

请求到达服务器,但问题是我无法从 Servlet 访问参数,

@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("NAME: " + req.getParameter("name"));
    System.out.println("PARAMS: " + new HashMap(req.getParameterMap()).toString());
    System.out.println("CT: " + req.getContentType());
}

下面是服务器的输出日志,

NAME: null
PARAMS: {}
CT: application/x-www-form-urlencoded

如您所见,参数映射为空。我错过了什么?

当涉及 PUT 请求时,

request.getParameter() 在 Servlet 中不起作用。所以这不是 OkHttp 的问题。至于为什么 request.getParameter()doPut(...) 中不起作用,请参考下面的 post,

Servlet request.getParameter() returns null in PUT but not in POST