C # — PostAsync ответ, возвращающий пустой массив

Я пишу мобильное приложение на Xamarin.Forms и у меня есть очень простой PHP-файл для моего бэкенда. Мобильное приложение отправляет почтовый запрос в файл PHP, а файл PHP предназначен для var_dump содержание сообщения.

<?php
echo "Your post response is...";
var_dump($_POST);
?>

Мое приложение Xamarin использует HttpClient класс для создания простого почтового запроса с использованием PostAsync() метод.

public class RestService
{
HttpClient client;
private const string URL = "https://braz.io/mobile.php";

public RestService()
{
client = new HttpClient();
client.MaxResponseContentBufferSize = 256000;
}

public async Task<string> getUserInformation()
{
User u = new User("Barns", "password1234", "[email protected]");
string json = JsonConvert.SerializeObject(u);
var uri = new Uri(string.Format(URL, string.Empty));
try
{
client.DefaultRequestHeaders.Add("Accept", "application/json");
StringContent s = new StringContent(json);
var response = await client.PostAsync(uri, s);
string body = await response.Content.ReadAsStringAsync();
}
catch (Exception ex)
{Console.WriteLine(ex);}

return null;
}
}

По какой-то причине мой почтовый запрос только получает ответ Your post resonse is... сопровождаемый пустым массивом. Странно, потому что когда я использую PostMan на Google Chrome, он возвращает правильную информацию.

Я проверил, что мой json переменная имеет допустимый JSON, так что я не уверен, почему PostAsync функция возвращает / отправляет пустой массив из / в мой файл PHP.

ОБНОВЛЕНИЕ согласно запросу комментария

JSON, который я посылаю, выглядит следующим образом:

"{\"username\":\"Barney\",\"password\":\"1234\",\"email\":\"[email protected]\"}"

мой user класс это:

public class User
{
public User(){ }

public string username { get; set; }
public string password { get; set; }
public string email { get; set; }

public User(string username, string password, string email)
{

this.username = username;
this.password = password;
this.email = email;
}
}

1

Решение

Проблема не имеет ничего общего с Xamarin стороной. Ваша проблема заключается в предоставленном вами PHP-коде и том факте, что когда вы пытались отправить что-то с помощью POSTman, вы не отправляли его в качестве тела запроса.

Чтобы прочитать тело запроса, вам нужно прочитать поток ввода:

$json = file_get_contents('php://input');

Затем вы можете вывести это с

var_dump($json);

Что касается вашего кода RestService, я бы посоветовал вам предоставить тип контента для вашего строкового контента:

var s = new StringContent(json, Encoding.UTF8, "application/json");
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]