Problema con espacios en Android

publicado por: Anonymous

Tengo un formulario en android el cual se comunica con un WebService para llenar una base de datos de MySql, el problema es que cuando ejecuto la app y escribo en el editText por ejemplo el nombre, si escribo dos palabras los datos no llegan a MySQL, pero si lleno los editText solo con una palabra sin dejar espacios entonces si llegan a MySql

Este es mi codigo en Java:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;

public class FormNegocio extends AppCompatActivity {
    EditText nombren, telefonon, direccionnR, direccionnE, correon, observacionesn;
    RadioButton tespecial, carga, encomiendan;
    Button confirmarnform, regresarnform;
    ListView listaResultado;
    String tipon;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_form_negocio);

        nombren = (EditText)findViewById(R.id.nombren);
        telefonon = (EditText)findViewById(R.id.telefonon);
        direccionnR = (EditText)findViewById(R.id.direccionnR);
        direccionnE = (EditText)findViewById(R.id.direccionnE);
        correon = (EditText)findViewById(R.id.correon);
        observacionesn = (EditText)findViewById(R.id.observacionesn);

        tespecial = (RadioButton)findViewById(R.id.tespecial);
        carga = (RadioButton)findViewById(R.id.carga);
        encomiendan = (RadioButton)findViewById(R.id.encomiendan);

        confirmarnform = (Button)findViewById(R.id.confirmarNform);
        regresarnform = (Button)findViewById(R.id.regresarNform);

        confirmarnform.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                if (tespecial.isChecked()){
                    tipon = "T. Especial";
                }else if (carga.isChecked()){
                    tipon = "carga";
                }else if (encomiendan.isChecked()){
                    tipon = "encomienda";
                }

               final String nombreform = nombren.getText().toString().trim();

                String registro = "http://miurl.com/micarpeta/registrarn.php?idusuarion=NULL&nombren="+nombreform+"&telefonon="+telefonon.getText()+"&direccionnR="+direccionnR.getText()+"&direccionnE="+direccionnE.getText()+"&correon="+correon.getText()+"&tipon="+tipon+"&observacionesn="+observacionesn.getText();

                EnviarRecibirDatos(registro);
                Intent confirmarnform = new Intent(FormNegocio.this, Fin.class);
                startActivity(confirmarnform);
            }
        });


        regresarnform.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent regresarnform = new Intent(FormNegocio.this, Inicio.class);
                startActivity(regresarnform);
            }
        });
    }

    public void EnviarRecibirDatos(String URL){

        Toast.makeText(getApplicationContext(), "Tenemos tu solicitud", Toast.LENGTH_SHORT).show();


        RequestQueue queue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {


                if (response.length()>0){
                    try {
                        JSONArray ja = new JSONArray(response);
                        Log.i("sizejson",""+ja.length());

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

                }

            }
        }, new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        queue.add(stringRequest);

    }



}

solución

Eso me ocurría a mi, te explico:

El problema viene cuando pasas los parámetros por GET al PHP, si pasas por ejemplo:

mipagina.com/script.php?nombre=pepe

Te lo acepta, pero…

mipagina.com/script.php?nombre=pepe garcía

No te lo acepta al tener ese espacio, la solución que yo le dí fue formatear dichos espacios en android antes de encapsularlos para mandarlos.

Reemplacé todos los ” “, por “%20”, el %20 reemplaza a los espacios en una cadena de texto de una URL, desde ese momento me empezó la app a guardarme las cadenas de textos con espacios en el mysql. Quedando la URL que envíes así:

mipagina.com/script.php?nombre=pepe%20garcía

Crea una función a la que la pasas una cadena de texto, y te haga un return con los espacios reemplazados.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *