Android Volley String请求不将POST数据发送到用户数据库

时间:2017-03-01 21:54:05

标签: java php android mysql android-volley

我正在编写一个Android应用程序来与实时服务器上的用户数据库进行交互。我目前正在开展“注册用户”活动,根据他们在编辑文本字段中输入的信息,该活动应该只是将用户添加到数据库中。

我正在使用Android的Volley Library来完成此任务,使用简单的字符串请求。然后将请求添加到请求队列。我能够连接并从服务器获得响应,但是当我尝试更新数据库(添加用户)时,没有任何反应。

我理解在使用method = POST(我的服务器所做的)时,必须覆盖指定键/值对的getParams()方法(其中KEY是来自php脚本的post数据,值是新数据)。 )

我尝试将我的请求队列实现为单例类,创建自定义标头,甚至尝试将volley的方法从POST修改为'DEPRECATED_GET_OR_POST'而没有运气。如果有人能告诉我我做错了什么或者缺少什么,那就非常感激。

这是我的代码:

//url to the registration page (on the server)
private static final String Register_URL = "http://www.wupx.com/arcums/profile/register.php";

//key values (these are the values in the DB)
public static final String Key_Username = "username";
public static final String Key_Realname = "name";
public static final String Key_Password = "password2";
public static final String Key_Email = "email";

//declare the editText field & Button
private EditText editTextUsername;
private EditText editTextName;
private EditText editTextEmail;
private EditText editTextPassword;
private EditText editTextPassword2;
private Button buttonRegister;


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

    //reference editText fields and buttons
    editTextUsername = (EditText) findViewById(R.id.editTextUserName);
    editTextName = (EditText) findViewById(R.id.editTextRealName);
    editTextEmail = (EditText) findViewById(R.id.editTextEmail);
    editTextPassword = (EditText) findViewById(R.id.editTextPassword);
    editTextPassword2 = (EditText) findViewById(R.id.editTextPasswordAgain);
    buttonRegister = (Button) findViewById(R.id.registerButton);


    buttonRegister.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            registerUser();//calls the registerUser method.
        }


    });
}

//method to add user to the arcums database
private void registerUser() {
    //print textview contents to logcat (debugging)
    Log.d("log message", "entering register User method");



    //values passed in from the user
    final String Username = editTextUsername.getText().toString().trim();
    final String Name = editTextName.getText().toString().trim();
    final String Password = editTextPassword.getText().toString().trim();
    final String Password2 = editTextPassword2.getText().toString().trim();
    final String Email = editTextEmail.getText().toString().trim();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, Register_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // put a toast here
                    Toast.makeText(register.this, R.string.register_response , Toast.LENGTH_SHORT).show();
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // error toast
                    Toast.makeText(register.this, R.string.register_error, Toast.LENGTH_SHORT).show();
                }
            }){

            //returns a hashmap with key value pairs
            @Override
            protected Map<String,String> getParams(){
                Map<String, String> params = new HashMap<String, String>();
                params.put(Key_Username, Username);
                params.put(Key_Realname, Name);
                params.put(Key_Password, Password2);
                params.put(Key_Email, Email);
                return params;
            }

    };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
}

}

这是php myadmin中我的数据库值的截图: DB values

请注意,并非所有字段都需要填写才能添加到数据库中 - 只需要名称,用户名,电子邮件和密码。

服务器本身没有GUI,所以我现在无法发布PHP代码。我希望有人可以帮助我们提供的信息!

0 个答案:

没有答案