有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案