【发布时间】: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