#java #android-volley
Вопрос:
Я хочу позвонить по второму запросу, когда получу первый. Я написал код, но в getquantity() только добавляет запрос. когда весь ответ будет получен в первом методе, придет ответ getquantity (). Я хочу сопоставить выходные данные, но я не могу этого сделать.
как получить быстрый ответ в getquantity()?
private void getServerData() {
if (requestQueue == null) {
requestQueue = Volley.newRequestQueue(this);
}
String zebpay_url = "https://www.zebapi.com/pro/v1/market/";
JsonArrayRequest jsonArrayRequest1 = new JsonArrayRequest(
Request.Method.GET,
zebpay_url,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
Request.Priority mPriority = Request.Priority.LOW;
for (int i = 0; i < response.length(); i ) {
JSONObject innerJObject = response.getJSONObject(i); //1INCH-INR
for (int j = 0; j < pairINR.length; j ) {
if (innerJObject.getString("pair").equals(pairINR[j])) {
ZEB_C_USDT_BUY=0;
ZEB_C_USDT_SELL=0;
ZEB_A_INR_BUY = Double.parseDouble(innerJObject.getString("buy"));
ZEB_A_INR_SELL = Double.parseDouble(innerJObject.getString("sell"));
if (ZEB_C_USDT_BUY == 0 || ZEB_C_USDT_SELL == 0) {
Log.d("EMPTYDATA", "");
} else {
getquantity(pairINR[j], j);
}
}
if (innerJObject.getString("pair").equals(pairUSDT[j])) {
ZEB_C_USDT_BUY=0;
ZEB_C_USDT_SELL=0;
ZEB_C_USDT_BUY = Double.parseDouble(innerJObject.getString("buy"));
ZEB_C_USDT_SELL = Double.parseDouble(innerJObject.getString("sell"));
if (ZEB_A_INR_BUY == 0 || ZEB_A_INR_SELL == 0) {
Log.d("EMPTYDATA", "");
} else {
getquantity(pairINR[j], j);
}
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "Error: " error, Toast.LENGTH_LONG).show();
}
}
) ;
requestQueue.add(jsonArrayRequest1);
}
private void getquantity(String pairString, int index) {
if (requestQueue1 == null) {
requestQueue1 = Volley.newRequestQueue(this);
}
String zebpay_book_url = "https://www.zebapi.com/pro/v1/market/" pairString "/book?converted=1";
JsonObjectRequest jsonObjectRequest1 = new JsonObjectRequest(
Request.Method.GET,
zebpay_book_url,
null,
new Response.Listener<JSONObject>() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onResponse(JSONObject response) {
try {
Iterator<String> keys = response.keys();
while (keys.hasNext()) {
String key = keys.next();
if (key.equals("asks")) {
Quantity_Buy = 0;
JSONArray innerobject = response.getJSONArray(key);
JSONObject innerobject1 = innerobject.getJSONObject(0);
Quantity_Buy = Double.parseDouble(innerobject1.getString("amount"));
}
if (key.equals("bids")) {
Quantity_Sell = 0;
JSONArray innerobject = response.getJSONArray(key);
JSONObject innerobject1 = innerobject.getJSONObject(0);
Quantity_Sell = Double.parseDouble(innerobject1.getString("amount"));
}
}
//updateData1(ZEB_A_INR_BUY, ZEB_A_INR_SELL, ZEB_B_INR_BUY, ZEB_B_INR_SELL, ZEB_C_USDT_BUY, ZEB_C_USDT_SELL, Fees, Quantity_Buy, Quantity_Sell, index);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error != null) {
}
}
}
);
requestQueue1.add(jsonObjectRequest1);
}
Спасибо.