使用PHP

时间:2016-12-31 02:35:21

标签: java php android

我正在按照本教程编写登录和注册应用程序:

https://www.youtube.com/watch?v=T7Z4GVFaT4A

我已经改变了PHP并通过在地址字段中传递一些参数来测试它,但是当我点击注册按钮时没有任何反应。 OnResponse函数中有一些应该做的事情,应该添加到数据库中,但没有任何反应。

如果我没有得到任何回复,我想知道是否有任何东西可以从应用程序发送。

另外,令我不安的是,函数OnResponse从未被调用,但应该是。

我没有使用某些ASP,而是使用WAMP创建服务器。下面是Java和PHP文件,它们对此问题至关重要。

RegisterRequest.java

package com.example.dominik.praca;

import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Dominik on 28.12.2016.
 */

public class RegisterRequest extends StringRequest {
    //private static final String REGISTER_REQUEST_URL = "http://kulturnik.ugu.pl/Register.php";
    //private static final String REGISTER_REQUEST_URL = "http://kulturnik.byethost3.com/Register2.php";
    private static final String REGISTER_REQUEST_URL = "http://127.0.0.1/kulturnik/Register.php";
    private Map<String, String> params;
    public RegisterRequest(String name, String username, String password, Response.Listener<String> listener){
        super(Method.POST, REGISTER_REQUEST_URL, listener, null);
        params = new HashMap<>();
        params.put("name", name);
        params.put("username", username);
        params.put("password", password);
    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }
}

RegisterActivity.java

package com.example.dominik.praca;

import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

public class RegisterActivity extends AppCompatActivity {

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

        final EditText etUsername = (EditText) findViewById(R.id.etUsername);
        final EditText etPassword = (EditText) findViewById(R.id.etPassword);
        final EditText etName = (EditText) findViewById(R.id.etName);
        final Button bRegister = (Button) findViewById(R.id.bRegister);

        bRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String name = etName.getText().toString();
                final String username = etUsername.getText().toString();
                final String password = etPassword.getText().toString();

                Response.Listener<String> responseListener = new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonResponse = new JSONObject(response);
                            boolean success = jsonResponse.getBoolean("success");

                            if (success) {
                                Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
                                RegisterActivity.this.startActivity(intent);
                                AlertDialog.Builder builderSuccess = new AlertDialog.Builder(RegisterActivity.this);
                                builderSuccess.setMessage("Rejestracja zakończona powodzeniem")
                                        .create()
                                        .show();
                            }
                            else {
                                AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                                builder.setMessage("Błąd rejestracji")
                                        .setNegativeButton("Ponów", null)
                                        .create()
                                        .show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                };

                RegisterRequest registerRequest = new RegisterRequest(name, username, password, responseListener);
                RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
                queue.add(registerRequest);
            }
        });
    }
}

和Register.php

<?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);

    $con = mysqli_connect("localhost", "root", "", "kulturnik");

    $name = $_POST["name"];
    $username = $_POST["username"];
    $password = $_POST["password"];
    $statement = mysqli_prepare($con, "INSERT INTO user (name, username, password) VALUES (?, ?, ?)");
    mysqli_stmt_bind_param($statement, "sss", $name, $username, $password);

    mysqli_stmt_execute($statement);

    $response = array();
    $response["success"] = true;  

    print_r(json_encode($response));
?>

1 个答案:

答案 0 :(得分:0)

使用异步任务更快发送&amp;检索往返服务器。只需创建类的对象并使用execute函数传递参数并启动/向服务器进行异步发送和检索。

例如: - SendtoPhp stp = new SendtoPhp();      stp.execute(tname,phone)

public class SendtoPhp extends AsyncTask<String, Void, String> {


            @Override
            protected String doInBackground(String... params) {
                String tname = params[0]; //parameters you need to send to server
                String phone = params[1];


                String data = "";

                int tmp;
                try {

                    URL url = new URL("http://your.server.com/"); //url to php code
                    String urlParams = "tname=" + tname + "&tphone=" + phone;


                    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                    httpURLConnection.setDoOutput(true);
                    OutputStream os = httpURLConnection.getOutputStream();

                    os.write(urlParams.getBytes());
                    os.flush();
                    os.close();

                    InputStream is = httpURLConnection.getInputStream();


                    while ((tmp = is.read()) != -1) {


                        data += (char) tmp;

                        //System.out.println(data);
                    }

                    is.close();
                    httpURLConnection.disconnect();

                    return data;

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                    return "Exception: " + e.getMessage();
                } catch (IOException e) {
                    e.printStackTrace();
                    return "Exception: " + e.getMessage();
                }
            }

            @Override
            protected void onPostExecute(String s) {
                try {
                    //You might receive something on server code execution using JSON object


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


            }
            }