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 中吗?
您可以通过两种方式完成:
使用 JSON 对象
public static Object doThis(Request request, Response response) {
response.type("application/json");
JSONObject jo = new JSONObject();
jo.put("data", "someData");
return jo;
}
使用格式为 JSON
的字符串
public static Object doThis(Request request, Response response) {
response.type("application/json");
return "{\"data\":\"someData\"}";
}
在我看来,第一个更好,因为您可以更方便地修改 JSON 对象(但您必须 import org.json.JSONObject
)。
然后,在客户端,您应该将数据视为JSON数据类型。希望对你有帮助。
我正在尝试让客户端 (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 中吗?
您可以通过两种方式完成:
使用 JSON 对象
public static Object doThis(Request request, Response response) { response.type("application/json"); JSONObject jo = new JSONObject(); jo.put("data", "someData"); return jo; }
使用格式为 JSON
的字符串public static Object doThis(Request request, Response response) { response.type("application/json"); return "{\"data\":\"someData\"}"; }
在我看来,第一个更好,因为您可以更方便地修改 JSON 对象(但您必须 import org.json.JSONObject
)。
然后,在客户端,您应该将数据视为JSON数据类型。希望对你有帮助。