【问题标题】:JsonHttpResponse onFailure error when inside adapter适配器内部时出现 JsonHttpResponse onFailure 错误
【发布时间】:2020-02-14 02:02:39
【问题描述】:

我有一个适配器,里面有很多东西。当我点击其中一个时,我会从连接到特定项目的某个 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)

在这 5 次左右的点击后,它会完成所需的工作。

第一次不工作有什么原因吗?或者如果代码完成了它的工作,为什么它仍然会给出这个错误。

谢谢

【问题讨论】:

  • 我建议你在detail活动中提出请求,避免在事务中发送所有detail信息。关于错误响应,您可以使用计算机中的代理应用程序检查所有请求/响应信息。我用查尔斯。

标签: android json http-headers


【解决方案1】:

来自 android-async-http 的官方 github 页面。似乎类似的问题: https://github.com/android-async-http/android-async-http/issues/1200

【讨论】:

  • 我添加了所有 3 并且它似乎工作,我希望它不是暂时的 =P 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
相关资源
最近更新 更多