Xamarin Android, как мне отправить данные POST на страницу PHP в базе данных MySQL? - PullRequest
0 голосов
/ 11 февраля 2020

Я собираюсь создать страницу регистрации, в которой хранятся учетные данные пользователей в базе данных MySQL, которая использует Infinity Free для размещения.

Я использую PHP, чтобы получить значения POST из программы для хранения в моей базе данных, однако это просто не работает.

Я делаю это для проекта колледжа, хотя важный, чтобы я мог действительно использовать некоторую помощь!

Код:

private async void MbtnDialogRegister_Click(object sender, EventArgs e)
        {
            //User has clicked the Sign Up! button
            HttpClient client = new HttpClient();
            Uri uri = new Uri("http://......./*something*.php");

            HttpContent formContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("Username", mTxtUsername.Text),
                new KeyValuePair<string, string>("Password", mTxtPassword.Text),
                new KeyValuePair<string, string>("FirstName", mTxtName.Text),
                new KeyValuePair<string, string>("Surname", mTxtSurname.Text),
                new KeyValuePair<string, string>("Gender", mGender)
            });
            HttpResponseMessage response = await client.PostAsync(uri, formContent);

            response.EnsureSuccessStatusCode();

            var responseResult = await response.Content.ReadAsStringAsync();

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                Client_UploadValuesCompleted(sender, e);
            }
            else
            {
                Toast.MakeText(this.Activity, "It didnt Work", ToastLength.Long).Show();
            }
        }

        private void Client_UploadValuesCompleted(object sender, EventArgs e)
        {
            Activity.RunOnUiThread(() =>
            {
                mOnRegisterComplete.Invoke(this, new OnSignUpEventArgs(mTxtUsername.Text, mTxtPassword.Text, mTxtName.Text, mTxtSurname.Text, mGender));
                this.Dismiss();
            });
        }

PHP:

$servername = "EXPUNGED";
$database = "EXPUNGED";
$username = "EXPUNGED";
$password = "EXPUNGED";

try 
{
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Connected successfully";
    echo('<br>UN'. $_POST['Username']);
    echo('<br>PW' . $_POST['Password']);
    echo('<br>FN' . $_POST['FirstName']);
    echo('<br>SN' . $_POST['Surname']);
    echo('<br>GN' . $_POST['Gender']);


    if(isset($_POST['Username']) && isset($_POST['Password']) && isset($_POST['FirstName']) && isset($_POST['Surname']) && isset($_POST['Gender']))
    {

    //Get the POST variables
    $mUsername = $_POST['Username'];
    $mPassword = $_POST['Password'];
    $mFirstName = $_POST['FirstName'];
    $mSurname = $_POST['Surname'];
    $mGender = $_POST['Gender'];

    echo "Variables received and set";

    $stmt = $conn->prepare('INSERT INTO USERS (Username, Password, FirstName, Surname, Gender) VALUES (:un, :pw, :fn, :sn, :gn)');
    $stmt->bindParam(':un', $mUsername);
    $stmt->bindParam(':pw', $mPassword);
    $stmt->bindParam(':fn', $mFirstName);
    $stmt->bindParam(':sn', $mSurname);
    $stmt->bindParam(':gn', $mGender);

    $stmt->execute();

    echo "New records created successfully";

    }
}
catch(PDOException $e)
{
    echo "Error: " . $e->getMessage();
}

$ conn = null; ?>

Я уже установил, что мой PHP определенно работает, поскольку я смог ввести данные в базу данных, создав приблизительный HTML и отправив туда жесткие значения, похоже, файл Xamarin Android, который я не могу обработать.

...