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

标签 java android android-volley httpresponse spark-java

我正在尝试让客户端(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/

相关文章:

java - Eclipse 启动时出现 NumberFormatException

java - 如何检查连接池是否被使用

java - Android 中的正则表达式帮助

java - Glide 用加载的图像部分覆盖屏幕

java.lang.IllegalArgumentException,我在游戏商店的崩溃报告中得到了这个异常,建议我如何解决这个问题......

android - 有什么办法可以关闭发布版本中的所有 VolleyLogs 吗?

java - 绑定(bind)到地址的套接字无法连接到监听器,除非在 Win XP 上绑定(bind)到 127.0.0.1

android - 在安装下载的 apk 文件时通过 Intent.getData() 错误暴露在应用程序之外

android - 创建一个包含 intents 的 android 库

android - 在 Android 上使用 volley 嵌套 JSON