Sparkjava 无法将数据放入响应 body

Sparkjava unable to put data into the response body

我正在尝试让客户端 (Android) 与我们使用 sparkjava 的服务器通信,但是 运行 遇到问题,即当客户端试图解析 body 的响应 response.data 和 Volley,结果是响应 body 是空的。客户端正在发送 JsonRequestObject ,如果响应的 body 为空,它将抛出 JSONException。

这是我们的 sparkJava 控制器:

  public static String doThis(Request request, Response response) {
        response.type("application/json");

        // If the request fails validations, then return a 400
        if (request.failsValidations()) {
            response.status(HTTP_BAD_REQUEST); // 400
            response.header("Error", "Bad request");
        } else {
            response.status(HTTP_SUCCESS); // 200
            // Put the response into the data
            String responseData = "{//someJson}"
            response.header("data", responseData);
            response.body(data);
        }
        return "";
    }

我在 header 和 body 中设置了相同的数据,但是当我查看客户端收到的响应时,数据仅在 header 和不在 body。所以我在想 Spark 的 response.body() 方法并没有真正将数据放入要发回的响应中。 response.body 在 sparkjava 中的表示方式与 volley 对它的看法不同吗?或者还有另一种方法可以将数据放入 spark 的响应 body 中吗?

您可以通过两种方式完成:

  1. 使用 JSON 对象

    public static Object doThis(Request request, Response response) {
        response.type("application/json");
    
        JSONObject jo = new JSONObject();
        jo.put("data", "someData");
        return jo;
    }
    
  2. 使用格式为 JSON

    的字符串
    public static Object doThis(Request request, Response response) {
        response.type("application/json");
    
        return "{\"data\":\"someData\"}";
    }
    

在我看来,第一个更好,因为您可以更方便地修改 JSON 对象(但您必须 import org.json.JSONObject)。

然后,在客户端,您应该将数据视为JSON数据类型。希望对你有帮助。