无法登录 OKHTTP3 response.body.string

Can't Log OKHTTP3 response.body.string

好的 - 所以我对此有点困惑。

我设置了 OKHTTP3 POST。当我得到响应时,我一直在尝试将正文放入一个字符串中(这是一个字符串响应)但是有些事情变得不稳定:

try {
        Response response = client.newCall(request).execute();

        String rep = response.body().string();
        if(rep.length() > 0){
            Log.i(TAG, "Got Response");
            Log.i(TAG, rep);
        }

    }catch (Exception e){
        e.printStackTrace();
    }

我收到一条日志,上面写着 "Got Response" 但是(长度为 80)然后它就停止了。它并没有说我的代表字符串为空或空......它只是从不调用第二个日志。

有人知道怎么回事吗?

试试用这个..

      OkHttpClient client = new OkHttpClient.Builder().build();          

      Request request = new Request.Builder()
            .url("")
            .build();

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

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                try {

                    Log.d("Response",response.body().string());

                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    response.body().close();
                }
            }

        });

对...所以显然我只需要将获取字符串的部分放入 AsyncTask 中,它就开始工作了。

没有任何错误消息或任何指示这样做的信息,但我回去查看了回调的文档,它提到在另一个线程上消耗正文。

new SendPictureClass().execute(response);

可能应该从那里开始...¯_(ツ)_/¯

感谢大家的帮助!

我也遇到了这个问题,Log无法正常工作
我找到了一个临时解决方案。
我尝试使用 Toast 显示响应,然后我发现响应弹出,但有很多空格(不确定这些字符是否为空格)。

所以我正在使用 Log.i(TAG, rep.trim());,效果很好。我不知道这个解决方案是否适合这个问题,但它毕竟对我有用。