gpt4 book ai didi

java - Sparkjava无法将数据放入响应正文

转载 作者:行者123 更新时间:2023-12-01 20:04:04 26 4
gpt4 key购买 nike

我正在尝试让客户端(Android)与使用sparkjava的服务器对话,但遇到了当客户端尝试解析响应正文时的问题response.data使用 Volley 时,会发现响应主体为空。客户端正在发送 JsonRequestObject ,如果响应正文为空,则会抛出 JSONException。

这是我们的 SparkJava Controller :

  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 和正文中设置相同的数据,但是当我查看客户端收到的响应时,数据仅在 header 中,而不在正文中。所以我认为 Spark 的 response.body() 方法并没有真正将数据放入发回的响应中。Sparkjava中response.body的表示方式与volley的查看方式不同吗?或者还有其他方法将数据从 Spark 放入响应正文中吗?

最佳答案

您可以通过两种方式做到这一点:

  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 对象(但您必须导入 org.json.JSONObject)。

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

关于java - Sparkjava无法将数据放入响应正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47660372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com