JsonHttpResponse onFailure ошибка, когда внутри адаптера - PullRequest
0 голосов
/ 17 октября 2019

У меня есть адаптер, в котором много предметов. Когда я нажимаю на одну из них, я читаю данные с некоторого Json, который связан с конкретным элементом.

Я использую следующий код:

DiscoverBookAdapter.OnDiscoverBookClickListener listener = new DiscoverBookAdapter.OnDiscoverBookClickListener() {
    @Override
    public void onClick(DiscoverBooks discoverBooks) {
        bookAdapter.clear();
        Intent intent = new Intent(DiscoverActivity.this, BookDetailActivity.class);
        client = new MyBookClient();
        client.getBooks( discoverBooks.getBookID(), new JsonHttpResponseHandler(){
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response){
                if(response!=null){
                    final MyBook books = MyBook.fromJson(response);
                    bookAdapter.add(books);
                    intent.putExtra( BOOK_DETAIL_KEY, bookAdapter.getItem( 0 ) );
                    intent.putExtra( CASE_KEY,"searching_book" );
                    intent.putExtra( ORIGIN_KEY, "profile" );
                    startActivity( intent );
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                super.onFailure(statusCode, headers, responseString, throwable);
                Log.d("Failed: ", ""+statusCode);
                Log.d("Error : ", "" + throwable);
            }
        });
    }
};

По какой-то причине, напримерпервые 5 щелчков дают мне следующую ошибку:

V/AsyncHttpRH: Progress 310 from 1 (31000%)
W/JsonHttpRH: onFailure(int, Header[], Throwable, JSONObject) was not overriden, but callback was received
    cz.msebera.android.httpclient.client.HttpResponseException: Forbidden
        at com.loopj.android.http.AsyncHttpResponseHandler.sendResponseMessage(AsyncHttpResponseHandler.java:446)
        at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:160)
        at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:177)
        at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:106)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

После этих примерно пяти щелчков выполняется нужная работа.

Есть ли причина, по которой он не работает в первый раз? время? или почему он все равно выдает эту ошибку, если код выполняет свою работу.

Спасибо

1 Ответ

0 голосов
/ 17 октября 2019

Со официальной страницы github на android-async-http. Кажется, похожая проблема: https://github.com/android-async-http/android-async-http/issues/1200

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...