【问题标题】:How can I extract the raw JSON string from an OkHttp Response object?如何从 OkHttp 响应对象中提取原始 JSON 字符串?
【发布时间】:2015-12-12 10:00:32
【问题描述】:
private static final String URL = "http://www.livroandroid.com.br/livro/carros/carros_{tipo}.json";

public static List<Carro> getCarros(Context context, String tipo) throws IOException {
    String url = URL.replace("{tipo}", tipo);
    OkHttpClient okHttpClient = new OkHttpClient();
    Request request = new Request.Builder()
            .url(URL)
            .build();
    Response response = okHttpClient.newCall(request).execute();
    String json = response.body().toString();
    List<Carro> carros = parserJSON(context, json);
    return carros;
}

如果我在调用getCarros 方法时打印出json 变量的值,我会在我的logcat 中看到以下消息:

com.squareup.okhttp.internal.http.RealResponseBody@1e11866

如何记录我收到的实际 JSON 字符串?

【问题讨论】:

    标签: android json okhttp


    【解决方案1】:

    (最初回答 OkHttp 版本 2.5.0)。

    替换

    String json = response.body().toString();
    

    与

    String json = response.body().string();
    

    response.body 返回一个ResponseBody 对象,它有自己的string 方法:参见源代码here。

    【讨论】:

    • 同样适用于 OkHttp 3.0.1
    • 它帮助我重用改造服务(接口)
    • okhttp 3.12+ 的任何解决方案? body.string() 不存在。
    • 你能在这里指导我吗:stackoverflow.com/questions/70907506/…?
    【解决方案2】:

    kotlin 用户试用此代码 100% 测试

    val result: String = Gson().toJson(response.body()!!.string())
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2015-03-29
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多