在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
我正在使用我的 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