java凌空JSonArrayRequest返回null
我想执行一个截取-JSonArrayRequest,等待响应解析它并返回它。但当前在calculateTotalBTC方法中调用时,它返回null
网址:https://api.bitfinex.com/v2/tickers?symbols=tAVTBTC,tIOTBTC,tOMGBTC,tXRPBTC,tYYWBTC
以下是初始化等
private static final String URLBITFINEX =
"https://api.bitfinex.com/v2/tickers?symbols=tAVTBTC,tIOTBTC,tOMGBTC,tXRPBTC,tYYWBTC";
RequestQueue queue;
private List<String> rates;
private TextView total_btc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
total_btc = findViewById(R.id.total_btc);
queue = Volley.newRequestQueue(this);
rates = new ArrayList<>();
NumberFormat format = new DecimalFormat("0.00000000");
total_btc.setText(String.valueOf(format.format(calculateTotalBTC())));
}
下面是解析JSON响应的方法:
public List<String> getBitfinexRates (String url) {
JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
for (int i = 0; i < response.length(); i++) {
JSONArray array = response.getJSONArray(i);
rates.add(array.get(7).toString());
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("error msg", error.getMessage());
}
});
queue.add(arrayRequest);
return rates;
}
这是calculateTotalBTC方法,当调用上述方法时,我会得到null:
public double calculateTotalBTC () {
rates = getBitfinexRates(URLBITFINEX);
List<Double> wallet = new ArrayList<>();
wallet.add(0, 0.0000068);
wallet.add(1, 0.00022);
wallet.add(2, 0.000869);
wallet.add(3, 0.000221);
wallet.add(4, 0.00002);
double btc = 0.00000887;
for (int i = 0; i < rates.size(); i++) {
double temp = wallet.get(i) * Double.valueOf(rates.get(i));
btc = btc + temp;
}
return btc;
}
共 (0) 个答案