НУЖНА ПОМОЩЬ
Мы создаем кроссплатформенное приложение в xamarin (Android / IOS). Мы создали систему входа в наше приложение, передавая каждый раз при входе пользователя идентификатор пользователя из базы данных. Этот идентификатор отправляется на другие страницы нашего приложения, чтобы мы могли использовать этот идентификатор для доступа к другой информации (на других страницах нашего приложения) этого указанного c пользователя с указанным c Id.
Пример:
Мы передали идентификатор на страницу профиля пользователя, который вошел в систему. Как вы можете видеть на экране ниже, мы хотим получить имя пользователя этого пользователя, чтобы мы могли использовать его в нашем приложение.
Когда мы передаем идентификатор с помощью страницы HTML, мы получаем правильные данные из базы данных, как вы можете видеть. Именно этот контент мы хотим показывать вместо «Имя пользователя» (изображение с первого лица).
Сценарий php, который мы использовали для получения этого данные из нашей базы данных (не беспокойтесь о mysql -инъекции, приложение для нас jsut, мы изменим это позже):
<?php
$db = new mysqli('localhost', 'root', 'Antjim0809!','sendmeadrink_official');
$Id = mysqli_real_escape_string($db, $_POST['Id']);
$res = mysqli_query($db, "SELECT Username from User WHERE Id = '$Id'");
while ($row = $res->fetch_assoc())
{
echo $row['Username'];
}
mysqli_close($db);
?>
Но когда мы пытаемся получить эту информацию с помощью Xamarin, мы получаем 'null' вместо 'Lucino23', как вы видите в выводе:
Код Xamarin нашей страницы профиля выглядит следующим образом (ProfilePage .XAML):
<Label Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="3"
Text="{Binding Username}"
FontAttributes="Bold"
FontSize="30"/>
Код (ProfilePage.XAML.cs)
readonly HttpClient client = new HttpClient(new HttpClientHandler());
readonly user u = new user() { Id = string.Empty, Username = string.Empty, Email = string.Empty, Passwd = string.Empty, Age = string.Empty };
public async void GetUserData(string Id)
{
HttpResponseMessage res;
u.Id = Id;
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("Id", u.Id)
});
res = await client.PostAsync("http://10.0.2.2/*/*/*/UsernameById.php", content);
u.Username = await res.Content.ReadAsStringAsync();
Console.WriteLine("-----------------------------------------");
Console.WriteLine(u.Username);
Console.WriteLine("-----------------------------------------");
}
Я возобновляю: когда мы применяем весь код выше, «Имя пользователя» (Рисунок 1) ) пуста, и мы не можем видеть имя пользователя, которое хранится в базе данных. Поэтому мы хотим заменить имя пользователя на строковое значение в нашей базе данных указанного пользователя c, который вошел в систему.
Спасибо всем!