okhttp3 onFailure每个偶数请求的“意外状态行”

时间:2017-08-17 12:56:33

标签: android okhttp

我有一个RecyclerVie和适配器。 在adatper内部,当我按下view时,我使用POST发送了一个http OkHttp3请求。 因此每个奇数请求发送良好,但每个偶数请求(甚至点击视图)都被放在onFailure内。

我在故障中得到了这个例子

java.net.ProtocolException: Unexpected status line: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">

如何修复或调试? 请帮帮我。 这是我的适配器代码:

    client.newCall(request).enqueue(new Callback()
    {
        @Override
        public void onFailure(Call call, IOException e)
        {
            Log.d("TAG", "Запрос отменен в onFailure адаптера схемы " + call.request().toString());
            // Отключаем pb в активити схемы
            ((Activity) mContext).runOnUiThread(new Runnable()
            {
                @Override
                public void run()
                {
                    // Отключаем progressBar
                    progressBar.setVisibility(View.GONE);
                    Log.d("TAG", "Отключаем progressBar");
                    Toast.makeText(mContext, " Настройки не применились, попробуйте еще раз", Toast.LENGTH_LONG).show();

                }
            });
            call.cancel();
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException
        {
            Log.d("TAG", "Получили Код = " + response.code() + " на " + response.request().method().toString() + " запрос " + call.request().toString());
            // Обрабатываем боди только если авторизация прошла и мы получили тело стартовой страницы.
            if (response.code() == 204)
            {
                Log.d("TAG", "Настройка применена успешно");
                // Чтобы обращаться к компанентам из ActivityBid нужно использовать runOnUiThread
                ((Activity) mContext).runOnUiThread( new Runnable()
                {
                    @Override
                    public void run()
                    {
                        Toast.makeText(mContext, "Установлена схема \n \"" + currSchemaName + "\"", Toast.LENGTH_LONG).show();
                    }
                });
                try
                {
                    Log.d("TAG", "Вызываем запрос на обновление схем из адаптера");
                    ((ActivitySchema) mContext).requestOkHttp("https://lk.mango-office.ru/300000230/" + ls.getCurrBidId() + "/call-fwd-settings/overview", "GET", "");
                } catch (JSONException e)
                {
                    e.printStackTrace();
                }
            } else
            {
                Log.d("TAG", "Настройка не применена");
                // Отключаем pb в активити схемы
                ((Activity) mContext).runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        // Отключаем progressBar
                        progressBar.setVisibility(View.GONE);
                        Log.d("TAG", "Отключаем progressBar");
                        Toast.makeText(mContext, " Настройки не применились. Сервер ответил с ошибкой, попробуйте еще раз", Toast.LENGTH_LONG);
                    }
                });
            }
           // response.body().close();
        }
    }
    );
}

1 个答案:

答案 0 :(得分:0)

问题出在请求“连接”标题中。我将它从“keep-alive”更改为“close”,现在可以了!