簡體   English   中英

無法從Android客戶端調用API

[英]Failing to make call to API from android client

我有一個燒瓶RESTFUL API,它可以正常運行並部署到heroku。 現在,我需要從我的android應用發出獲取請求。 我正在使用圖書館來做到這一點。

這是在URL https://thecaffapi.herokuapp.com/api/v1/all_stock上調用API的代碼,它將JSON數組返回到android客戶端:

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()方法沒有被覆蓋並因此運行?

提前致謝,

湯姆

onSucess方法的第三個元素是響應應解析到的對象。 您的響應不是數組格式,它具有一個名稱名稱對,其中值是一個數組。 因此,您需要改用JSONObject並從中獲取數組。

client.get(baseurl + "all_stock", null, new JsonHttpResponseHandler() {
    @Override
    public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
        JSONArray allStock = response.getJSONArray("stock");
        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();
            }
        }
    }
});

似乎您必須重寫確切的方法

onSuccess(int, Header[], JSONObject), 

你的看起來有點不同:

onSuccess(int statusCode, Header[] headers, JSONArray allStock) 

您的api給您一個JSONObject ,而不是JSONArray

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM