访问OKHttp响应正文 [英] Accessing OKHttp Response Body

查看:59
本文介绍了访问OKHttp响应正文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我需要弄清楚如何访问从第二个响应中的第一个响应获得的值。我认为我可以将其存储到a变量中,然后在另一个请求中访问它。然而,情况似乎并非如此。

这是给我带来问题的部分。因此,我的第一个请求是获取令牌,然后我需要在第二个请求中使用存储在逗号中的令牌。

private final OkHttpClient client = new OkHttpClient();

    public void run() throws Exception {
        Request request = new Request.Builder()
                .url(API_URL + authPreferences.getToken())
                .build();

        client.newCall(request).enqueue(new Callback() {
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }


            public void onResponse(Call call, Response response) throws IOException {
                if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

                Headers responseHeaders = response.headers();
                for (int i = 0, size = responseHeaders.size(); i < size; i++) {
                    System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
                }

                System.out.println(response.body().string());
                String commatoken = response.body().string();
            }
        });

        Request dataRequest = new Request.Builder()
                .header("Authorization", "jwt"+commatoken)
                .url(ChffrMe_URL).build();

        client.newCall(dataRequest).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

                Headers responseHeaders = response.headers();
                for (int i = 0, size = responseHeaders.size(); i < size; i++) {
                    System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
                }

                System.out.println(response.body().string());

            }
        });
    }

推荐答案

我想我们只能调用response.body().string()一次...因此,首先将数据保存到字符串变量中。并在您需要的任何地方访问它。

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

您正在调用Response.Body().string()两次...

详细信息 https://stackoverflow.com/a/27922818/3552066

这篇关于访问OKHttp响应正文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆