私は完全に機能しherokuにデプロイされているフラスコRESTFUL APIを持っています。私は今、私のアンドロイドアプリからリクエストを受ける必要があります。私はこれを行うためにライブラリを使用しています。ここでアンドロイドクライアントからAPIへの呼び出しに失敗しました
は、AndroidクライアントにJSON配列を返すURL https://thecaffapi.herokuapp.com/api/v1/all_stock、でAPIへの呼び出しを行うコードです:
client.get(baseurl + "all_stock", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray allStock) {
for (int i = 0; i < allStock.length(); i++) {
try {
JSONObject stockObject = allStock.getJSONObject(i);
int id = stockObject.getInt("id");
String stockTitle = stockObject.getString("stock_title");
int stockNumber = stockObject.getInt("stock_number");
Stock stock = new Stock(id, stockTitle, stockNumber);
mStockList.add(stock);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
ラインclient.get(baseurl + "all_stock", null, new JsonHttpResponseHandler() {
が実行され、しかしするonSuccess()メソッドはありません走りません。アプリは、コンソールのレポートを実行している
次AsyncHttpClientに関連:
V/AsyncHttpRH: Progress 216 from 216 (100%)
W/JsonHttpRH: onSuccess(int, Header[], JSONObject) was not overriden, but callback was received
はなぜするonSuccess()メソッドをオーバーライドし、その結果実行されていないのですか?
onSuccess(int statusCode, Header[] headers, JSONArray allStock)
あなたのAPIはあなたを与える:事前に
おかげで、
トム
これは、ループ内の 'mStockList'の内容は正しいデータを保持しています。しかし、このブロックの外に 'mStockList'の内容を返すと、それは空です。 –
これは非同期呼び出しで、onSucessメソッドは別のスレッドで実行され、他のステートメントはUIスレッド内にあるため、呼び出しが実行されたときにデータはロードされません。 – rhari
おかげで、人生節約のもの。 –