Xamarin PostAsyn c, не предоставляющий контент Resposne - PullRequest
0 голосов
/ 23 апреля 2020

Я делаю эту функцию в формах Xamarin:

public async Task<HttpResponseMessage> RegisterClient(string url)
{
    try
    {
        using (HttpClient httpclient1 = new HttpClient())
        {
            var newClient = new Client()
            {
                CountryId = 223,
                Email = "somename@123.com",
                Fname = "From Xamarin",
                UserName = "somename",
                Dob = Convert.ToDateTime("2020-01-01"),
                Password = "SomeSome"               
            };

            var jsonObject = JsonConvert.SerializeObject(newClient);
            HttpContent content = new StringContent(jsonObject, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await httpclient1.PostAsync(url, content);
            return response;
        }
    }
    catch (Exception ex)
    {
        await DisplayAlert("Information", ex.Message, "Ok");
        return null;
    }
}

Эта функция кода не возвращает содержимого даже после присвоения значений. Любая подсказка, где я не прав. WebAPI отлично работает в POSTMAN. Мой WebAPI-контроллер выглядит так:

[HttpPost("PostClient")]
public async Task<ActionResult<Client>> PostClient(Client client)
{
    try
    {
        _context.Clients.Add(client);
        await _context.SaveChangesAsync();
        return CreatedAtAction("GetClient", new { id = client.ClientId }, client);
    }
    catch(Exception ex)
    {
        return null;
    }
}

Пожалуйста, помогите. Спасибо

1 Ответ

0 голосов
/ 24 апреля 2020

Разрешено.

HttpClient httpClient = new HttpClient();
Uri uri = new Uri(url);
StringContent content = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(uri, content);
httpResponseMessage.EnsureSuccessStatusCode();
var httpResponseBody = await httpResponseMessage.Content.ReadAsStringAsync();
Console.WriteLine(httpResponseBody);

Заменили Encoding.UTF8 на UnicodeEncoding.UTF8 и все заработало. Тайна раскрыта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...