okhttp android не возвращается правильное тело ответа - PullRequest
0 голосов
/ 05 мая 2020

Ниже часть моего кода okhttp

                    StringBuilder finalQuery = new StringBuilder(fq);
                    finalQuery.deleteCharAt(finalQuery.length()-1);
                    //System.out.println("Final search query : "+finalQuery.toString());

                    Request request = new Request.Builder().url(finalQuery.toString()).build();
                    client.newCall(request).enqueue(new Callback() {
                        @Override
                        public void onFailure(Call call, IOException e) {
                            System.out.println("FAILED!!!");
                            e.printStackTrace();
                        }

                        @Override
                        public void onResponse(Call call, Response response) throws IOException {
                            if(response.isSuccessful())
                            {
                                StringBuilder strResponse = new StringBuilder(response.body().toString());
                                System.out.println("strResponse: "+strResponse.toString());
                                resp=strResponse.toString();
                                Intent intent = new Intent(MainActivity.this, onResponse.class);
                                startActivity(intent);
                            }
                            else
                            {
                                System.out.println("NOT SUCCESSFUL");
                            }

                        }
                    });

Ни одна из строк не пуста. Вызов веб-сайта был успешным, но тело ответа выглядит следующим образом:

2020-05-05 13:47:40.982 15129-15161/com.example.lyricsapp I/System.out: strResponse: okhttp3.internal.http.RealResponseBody@b650836

Когда я использовал онлайн-клиент для проверки ответа с использованием той же строки, там все было нормально. В моем коде это не так. Какая ошибка в моем коде?

1 Ответ

0 голосов
/ 05 мая 2020

Используйте string(), чтобы получить содержимое тела ответа в виде строки. То есть замените

response.body().toString()

на

response.body().string()

toString() - это метод из Object, и он просто дает вам имя класса и код ha sh.

...