Как сделать многократный запрос залпа? - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над чатботом, который использует API для получения данных, но когда я делаю запрос при запуске, он работает хорошо, но если я хочу сделать еще один запрос, результатом остается старый ответ от старого запроса, который я должен отправитьзапросите еще раз, чтобы получить новый результат.Есть ли какое-нибудь решение ????

Я попробовал wait() в функции, у которой есть залповые запросы, но она не работает

   public String getResult(String team1,String team2,String code,Context context)
   {
    this.context=context;

    //"https://apifootball.com/api/?action=get_H2H&firstTeam=Arsenal&secondTeam=Chelsea&APIkey=7"

    String URL="https://apifootball.com/api/?action=get_H2H&firstTeam="+team1+"&secondTeam="+team2+"&APIkey=7";
    //"https://apifootball.com/api/?action=get_countries&APIkey=7";
    RequestQueue rq= Volley.newRequestQueue(context);
    JsonObjectRequest objreq= new JsonObjectRequest(

            Request.Method.GET,
            URL,
            null,
            new Response.Listener<JSONObject>()
            {
                @Override
                public void onResponse(JSONObject response) {
                    String Scores="";

                    //    Log.e("result:",response.get(0).toString());
                    JSONObject obj;

                    //  obj=response.getJSONObject("firstTeam_VS_secondTeam");
                    try {

                        JSONArray obj2 =response.getJSONArray("firstTeam_VS_secondTeam");
                        Log.e("obj", obj2.getJSONObject(0).getString("match_hometeam_score"));
                        Scores=Scores+ obj2.getJSONObject(0).getString("match_hometeam_score")+"\n"+obj2.getJSONObject(0).getString("match_awayteam_score")+"\n"+obj2.getJSONObject(0).getString("match_date");

                    } catch (JSONException e) {

                    }
                    String []arr = Scores.split("\n");
                    model = new ChatModel("First team:"+arr[0]+"\nSecond team:"+arr[1]+"\n"+"Date:"+arr[2], false);
                    list_chat.add(model);

                    //share(Scores);



                }


            },
            new Response.ErrorListener(){

                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("rest response",error.toString());






                }
            }


    );
    rq.add(objreq);


    SharedPreferences m= PreferenceManager.getDefaultSharedPreferences(context);
    final String resp=m.getString("Response","");
    return  resp;
}

Основная активность

 if(result.equals("error")==true) {

                    APIAdapter ap = new APIAdapter();
                    head2Head = ap.getResult("Bristol City", "Reading", "kjkn", getApplicationContext());
                    finres = head2Head;
                    Log.e("headto",head2Head);
                    arr = head2Head.split("\n");
                    //send(arr[2],false);

                    // model = new ChatModel("First team:"+arr[0]+"\nSecond team:"+arr[1]+"\n"+"Date:"+arr[2], false); // user send message
/*
                    Team t1=new Team(3,"Bristol City");
                    Team t2=new Team(0,"Reading");
                    Long tid1=x.insertTeam(t1);
                    Long tid2=x.insertTeam(t2);

                    Match m=new Match(0,Integer.parseInt(String.valueOf(tid1)),Integer.parseInt(String.valueOf(tid2)),arr[2]);
                    Long mid=x.insertMatch(m);
                    Log.e("mid",String.valueOf(mid));
                    Result resul=new Result(0,Integer.parseInt(String.valueOf(mid)),x.getTeam(tid1).getTeamId(),x.getTeam(tid2).getTeamId(),Integer.parseInt(arr[0]),Integer.parseInt(arr[1]));
                    x.insertResult(resul);

                */}
                send("First team:"+arr[0]+"\nSecond team:"+arr[1]+"\n"+"Date:"+arr[2], false);


            }

отправить ()

    void send(String text,boolean sender)
{


    ChatModel model = new ChatModel(text,sender); // user send message
    list_chat.add(model);



    CustomAdapter adapter = new CustomAdapter(list_chat,getApplicationContext());
    listView.setAdapter(adapter);

    //remove user message
    editText.setText("");
}

1 Ответ

0 голосов
/ 10 июня 2019

Я не уверен, что понимаю, в чем ваша проблема, но я сделаю все возможное, чтобы помочь.

  1. Определите RequestQueue вне функции (onCreate () может быть хорошим местом), таким образом, вы не инициализируете его каждый раз, когда делаете запрос, и он может фактически работать как очередь для запросов.

  2. Возможно, проблема в способе обработки list_chat, пожалуйста, опубликуйте код, который вы используете для его отображения.

...