我有一个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();
}
}
);
}
答案 0 :(得分:0)
问题出在请求“连接”标题中。我将它从“keep-alive”更改为“close”,现在可以了!