![](/img/trans.png)
[英]How to make authenticated django rest api call from android client?
[英]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.