在 Servlet 中获取 OkHttp PUT 请求参数
Posted
技术标签:
【中文标题】在 Servlet 中获取 OkHttp PUT 请求参数【英文标题】:Get OkHttp PUT request parameters in Servlets 【发布时间】:2021-08-11 12:21:33 【问题描述】:我正在使用我的 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
如您所见,参数映射为空。我错过了什么?
【问题讨论】:
【参考方案1】:request.getParameter()
在处理 PUT
请求时无法在 Servlet 中工作。所以这不是OkHttp
的问题。至于为什么request.getParameter()
在doPut(...)
中不起作用,请参阅下面的帖子,
Servlet request.getParameter() returns null in PUT but not in POST
【讨论】:
以上是关于在 Servlet 中获取 OkHttp PUT 请求参数的主要内容,如果未能解决你的问题,请参考以下文章