Volley POST发送多个JSON

时间:2018-01-10 04:11:37

标签: java android json android-volley

我在使用StringRequest发送多个JSON时有一个排球问题,我认为问题出在hashmap联合国getParms()

public class MainActivity extends AppCompatActivity {

  private static final String TAG = "ENCUESTA";
  private static final String VERSION = "2.0.0.3";
  private int totalEncuestas=0;
  private Encuestador encuestador;
  Button btnRutEncuestador;
  Button btnEmisivo;
  Button btnReceptivo;
  Button btnEnvioData;
  EditText txtRut;
  EditText txtDV;
  EditText txtDebug;
  TextView lblVersion;
  private JSONObject itemEnviar;
  private int contador;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);
    encuestador = new Encuestador();

    btnRutEncuestador = (Button) findViewById(R.id.btnRutEncuestador);
    btnEmisivo = (Button) findViewById(R.id.btnEmisivo);
    btnReceptivo = (Button) findViewById(R.id.btnReceptivo);
    btnEnvioData = (Button) findViewById(R.id.btnEnvioData);
    txtRut = (EditText) findViewById(R.id.txtRut);
    txtDV = (EditText) findViewById(R.id.txtDV);
    lblVersion = (TextView) findViewById(R.id.lblVersion);

    //DEBUG
    //btnReceptivo.setEnabled(true);
    //btnEmisivo.setEnabled(true);
    lblVersion.setText(Util.getVersion());


    //region SIN USO
    /*ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5);

    scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
        public void run() {
            if(!Util.leerArchivo(MainActivity.this, "data.txt").isEmpty()) {
                if(Util.verificaConexion(MainActivity.this)) {
                    Log.d(TAG, "Enviando información");
                    RequestQueue MyRequestQueue = Volley.newRequestQueue(MainActivity.this);
                    String url = "http://www.inicial.cl/android/set.php";
                    StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            if (!response.isEmpty() && response.equalsIgnoreCase("success")) {
                                Log.d(TAG, "success, elimina data local");
                                Util.vaciarEncuesta(MainActivity.this);
                            }
                        }
                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.d(TAG, "onError: " + error);
                        }
                    }) {
                        protected Map<String, String> getParams() {
                            Map<String, String> MyData = new HashMap<String, String>();
                            try {
                                MyData.put("data", Util.leerArchivo(MainActivity.this, "data.txt"));
                            } catch (Exception e) {
                                Log.e(TAG, "Error al enviar: " + e.getMessage());
                            }
                            return MyData;
                        }
                    };
                    MyRequestQueue.add(MyStringRequest);
                }else{
                    Log.d(TAG, "Sin internet");
                }
            }else{
                Log.d(TAG, "Sin data");
            }
        }
    }, 0, 5, TimeUnit.MINUTES);*/

    /*txtRut.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {

        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }

        @Override
        public void afterTextChanged(Editable arg0) {
            String txt = Util.getTextFromEditText(txtRut);
            if(!txt.isEmpty() && txt.equalsIgnoreCase("123123"))
            {
                txtDebug.setVisibility(View.VISIBLE);
                txtDebug.setText(Util.leerArchivo(MainActivity.this, "data.txt"));
            }else
            {
                txtDebug.setVisibility(View.GONE);
                txtDebug.setText("");
            }
        }

    });*/
    //endregion


    //region btnRutEncuestador
    btnRutEncuestador.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String strRut = txtRut.getText().toString();
            String strDV = txtDV.getText().toString();
            if (strRut.isEmpty()) {
                Toast.makeText(getApplicationContext(), "Debe ingresar rut", Toast.LENGTH_SHORT).show();
                return;
            }
            if (strDV.isEmpty()) {
                Toast.makeText(getApplicationContext(), "Debe ingresar DV", Toast.LENGTH_SHORT).show();
                return;
            }

            Boolean existeEncuestador = false;
            for (Encuestador e : Encuestador.getAllEncuestadores()) {
                Log.d(TAG, "RutIngresado=" + strRut + "-" + strDV + "         RutBase:" + e.getRut() + "-" + e.getDv());
                if (strRut.equalsIgnoreCase(e.getRut()) && strDV.equalsIgnoreCase(e.getDv())) {
                    encuestador = new Encuestador();
                    encuestador.setRut(strRut);
                    encuestador.setDv(strDV);

                    btnReceptivo.setEnabled(true);
                    btnEmisivo.setEnabled(true);
                    existeEncuestador = true;
                    break;
                } else {
                    existeEncuestador = false;
                }

            }

            if (!existeEncuestador) {
                Util.alertDialog(MainActivity.this, "El Rut ingresado no esta habilitado para realizar encuestas",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.dismiss();
                            }
                        });
            }

        }
    });
    //endregion

    //region btnEmisivo
    btnEmisivo.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(), EmisivoActivity.class);
            intent.putExtra("ENCUESTADOR", encuestador);
            startActivity(intent);
        }
    });
    //endregion

    //region btnReceptivo
    btnReceptivo.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(), ReceptivoActivity.class);
            intent.putExtra("ENCUESTADOR", encuestador);
            startActivity(intent);
        }
    });
    //endregion



    //region btnEnvioData
    btnEnvioData.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            btnEnvioData.setEnabled(false);
            if (!Util.leerArchivo(MainActivity.this, "data.txt").isEmpty()) {
                if (Util.verificaConexion(MainActivity.this)) {
                    Log.d(TAG, "Enviando información");

                    try {
                        JSONArray list = new JSONArray(Util.leerArchivo(MainActivity.this, "data.txt"));

                        totalEncuestas = list.length();

                        setContador(0);


                        for (int i = 0; i < list.length(); i++) {
                            Log.d(TAG, "DATA:"+list.getJSONObject(i));

                            setItemEnviar(list.getJSONObject(i));
                            sendRequest();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                } else {
                    Log.d(TAG, "Sin internet");
                    Util.alertDialog(MainActivity.this, "Error, no hay conexión a internet",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.dismiss();
                                }
                            });
                    btnEnvioData.setEnabled(true);
                }
            } else {
                Log.d(TAG, "Sin data");
                Util.alertDialog(MainActivity.this, "Sin encuestas que enviar",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.dismiss();
                            }
                        });
                btnEnvioData.setEnabled(true);
            }
        }
    });
    //endregion

}

public void sendRequest()
{

    RequestQueue MyRequestQueue = Volley.newRequestQueue(MainActivity.this);

    String url = "http://www.inicial.cl/android/set.php";
    StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            if (!response.isEmpty() && response.equalsIgnoreCase("success")) {

                setContador(getContador() + 1);

                if(getContador() == totalEncuestas) {
                    Util.alertDialog(MainActivity.this, "Encuestas enviadas exitosamente!",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.dismiss();
                                }
                            });
                    btnEnvioData.setEnabled(true);
                    Util.vaciarEncuesta(MainActivity.this);
                }

            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "onError: " + error);
            btnEnvioData.setEnabled(true);
        }
    }) {
        protected Map<String, String> getParams() {
            Map<String, String> MyData = new HashMap<String, String>();
            try {

                MyData.put("data"+Integer.toString(getContador()), getItemEnviar().toString().replaceAll("\n", ""));
                Log.e(TAG, "enviados: " + getItemEnviar().toString());

            } catch (Exception e) {
                Log.e(TAG, "Error al enviar: " + e.getMessage());
                btnEnvioData.setEnabled(true);
            }
            return MyData;
        }
    };

    MyRequestQueue.add(MyStringRequest);
    MyRequestQueue.getCache().clear();


}


public JSONObject getItemEnviar() {
    return itemEnviar;
}

public void setItemEnviar(JSONObject itemEnviar) {
    this.itemEnviar = itemEnviar;
}

public int getContador() {
    return contador;
}

public void setContador(int contador) {
    this.contador = contador;
 }
}

问题在于,当我收到要发送的数据时,在JSON for send是正常的,但在getparms()这只为发送设置了最后JSON,发送总阵列的多次

0 个答案:

没有答案