簡體   English   中英

使用截擊字符串時未發送POST數據

[英]POST data not sent when using volley stringreuqest

我仍然是android應用程序開發的新手,已經有很長時間了。 我正在嘗試創建一個注冊頁面,但帖子數據未發送。 這是我的代碼:

RegisterActivity

public class RegisterActivity extends AppCompatActivity {

    private EditText name, email, password, c_password;
    private Button register_button;
    private ProgressBar loading;
    private static String URL_REGIST = "http://192.168.1.6:7777/androidregistertest/register.php";

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

        loading = findViewById(R.id.loading);
        name = findViewById(R.id.name);
        email = findViewById(R.id.email);
        password = findViewById(R.id.password);
        c_password = findViewById(R.id.c_password);
        register_button = findViewById(R.id.register_button);

        register_button.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                Regist();
            }
        });
    }

    private void Regist() {
        loading.setVisibility(View.VISIBLE);
        register_button.setVisibility(View.GONE);

        final String name = this.name.getText().toString().trim();
        final String email = this.email.getText().toString().trim();
        final String password = this.password.getText().toString().trim();

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_REGIST,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");

                        if (success.equals("1")) {
                            Toast.makeText(RegisterActivity.this, "Register Success", Toast.LENGTH_SHORT).show();
                        }

                    }
                    catch (JSONException e){
                        e.printStackTrace();
                        Toast.makeText(RegisterActivity.this, "Register Error! " + e.toString(), Toast.LENGTH_SHORT).show();
                        loading.setVisibility(View.GONE);
                        register_button.setVisibility(View.VISIBLE);
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(RegisterActivity.this, "Register Error 2! " + error.toString(), Toast.LENGTH_SHORT).show();
                    loading.setVisibility(View.GONE);
                    register_button.setVisibility(View.VISIBLE);
                }
            })

        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("name", name);
                params.put("email", email);
                params.put("password", password);

                return super.getParams();
            }
        };

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

register.php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['password'];

    $password = password_hash($password, PASSWORD_DEFAULT);

    require_once 'connect.php';

    $sql = "INSERT INTO logins (name, email, password) VALUES ('".$name."', '".$email."', '".$password."')";
    if (mysqli_query($conn, $sql)) {
        $result['success'] = "1";
        $result['message'] = "success";

        echo json_encode($result);
        mysqli_close($conn);
    }
    else {
        $result['success'] = "0";
        $result['message'] = "error";
    }
}

當我單擊注冊按鈕時,響應包含以下錯誤消息,

注意 :未定義的索引:第3行的D:\\ xampp-7 \\ htdocs \\ androidregistertest \\ register.php中的名稱
注意 :未定義的索引:第4D:\\ xampp-7 \\ htdocs \\ androidregistertest \\ register.php中的電子郵件
注意 :未定義索引:第5D:\\ xampp-7 \\ htdocs \\ androidregistertest \\ register.php中的密碼

為什么未發送過帳數據?

除了一件事,一切似乎都是正確的,您已將參數添加到Map中,但沒有將其返回到volly進行發送。 您的方法只需一行即可更改

@Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("name", name);
            params.put("email", email);
            params.put("password", password);

            return super.getParams(); //Change this 
            return params; //to this
        }

最好的祝願。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM