Как делать просьбу get несколько раз в android?

Я делаю приложение android, который получает url, где находится файл json. Приложение как только у него есть url

    direccion/carpeta/carpeta2/result.json

он уходит немедленно в это место, но возможно, что файл json даже не находит изобилие, и это оказывается так:

    {"height":720,"width":720,"captions":[],"boxes":[]}

Так что я должен делать просьбу get или recarcargar снова до тех пор, пока не выйдет полным файл json

или же я схватил:

    {"height":375,"width":500,
    "captions":["wooden cabinets kitchen",
    "brown cabinets in kitchen","a black and white stove",
    "the floor is wooden","window with white frame",
    "a kitchen with white and black stove",
    "wooden cabinets in kitchen","window with white blinds",
    "window in the room","a kitchen with white walls",
    "a white window frame","a wooden headboard","a wooden floor",
    "the cabinet is made of wood","a brown cabinet",
    "brown wooden cabinets"],
    "boxes":[[60.355659484863],[288.16293334961],
    [352.76892089844],[288.03231811523],
    [208.66075134277]]}

и это - то, что не делать ему...

Как я делаю просьбу снова?

это мой код, чтобы делать get

    public class JSONTask extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... params) {

        HttpURLConnection connection = null;
        BufferedReader reader = null;

        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();

            InputStream stream = connection.getInputStream();

            reader = new BufferedReader(new InputStreamReader(stream));

            StringBuffer buffer = new StringBuffer();

            String line = "";
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }
            return buffer.toString();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (connection != null)
                connection.disconnect();
            try {
                if (reader != null)
                    reader.close();
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        try {
            super.onPostExecute(result);
            try {
                JSONObject jObject = new JSONObject(result); //Obtenemos el JSON global
                JSONArray jArray = jObject.getJSONArray("captions"); //Obtenemos el array captions
                for (int i=0; i < jArray.length(); i++) //Miramos en todos los objetos del array
                    textView.setText(jArray.toString());
            }catch (JSONException e){
                e.printStackTrace();
            }
        }catch (NullPointerException e){
            e.printStackTrace();
        }
    }
}
1
задан 22.04.2017, 00:29
1 ответ

Если считаешь созданным ты AsyncTask, который получает url, который является .json в parsear, просто ты можешь называть выполнять AsyncTask согласно url, в которых ты нуждаешься parser:

 new JSONTask().execute("http://mydomain.com/archivo1.json");
 new JSONTask().execute("http://mydomain.com/archivo2.json");
 new JSONTask().execute("http://mydomain.com/archivo3.json");
...
...

Другая форма состоит в том, чтобы посылать один несколько url и получив их в doInBackground(), получается Array, который содержит эту стоимость:

new JSONTask().execute(urlJson1, urlJson2, urlJson3);

, но внутри твоих AsyncTask tendrГ-схвати, что реализовывать изменения реализовывать просьбы этого Array urls:

class JSONTask extends AsyncTask<String, Void, JSONObject[]> {
     ...
      @Override
      protected String doInBackground(String... params) {


         String urlJson1 = params[0];
         String urlJson2 = params[1];
         String urlJson3 = params[2];

    ...
    ...
0
ответ дан 24.11.2019, 12:05

Теги

Похожие вопросы