【问题标题】:Get OkHttp PUT request parameters in Servlets在 Servlet 中获取 OkHttp PUT 请求参数
【发布时间】: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

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

【问题讨论】:

    标签: java android servlets jakarta-ee okhttp


    【解决方案1】:

    request.getParameter() 在处理 PUT 请求时无法在 Servlet 中工作。所以这不是OkHttp 的问题。至于为什么request.getParameter()doPut(...) 中不起作用,请参阅下面的帖子,

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

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2017-09-03
      • 1970-01-01
      • 2011-05-01
      • 2016-06-22
      • 1970-01-01
      相关资源
      最近更新 更多