асинхронный запрос POST к серверу php - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь отправить строку из моего приложения C # на мой php-сервер (впервые используя async). Когда я пытаюсь записать свой ответ на консоль, я просто получаю следующее: System.Threading.Tasks.Task'1[System.String]

Код C #

private HttpClient request;
public async Task<string> licenseCheck(HttpClient client, string email){
var payload = new Dictionary<string, string>
{
    { "email", email }
};

var content = new FormUrlEncodedContent(payload);           
var response = await client.PostAsync("https://example.io/checkin.php", content);

return await response.Content.ReadAsStringAsync();
}

request = new HttpClient();
Console.WriteLine(licenseCheck(request,"joe@example.com").ToString());

PHP-код - checkin.php

<?php
    $email = trim(strtolower($_POST['email']));
    header('Content-Type: application/x-www-form-urlencoded');
    echo $email;

1 Ответ

1 голос
/ 20 апреля 2019

Объект, для которого вы вызываете ToString () в последней строке, является задачей, которая выполняет проверку лицензии. Вам следует ожидать вызова licenseCheck или использовать свойство Task.Result для синхронного ожидания задачи и получения результата, если ваш запрос выполняется синхронно:

// This allows the runtime to use this thread to do other work while it waits for the license check to finish, when it will then resume running your code
Console.WriteLine(await licenseCheck(request,"joe@example.com"));
// This causes the thread to twiddle its thumbs and wait until the license check finishes, then continue
Console.WriteLine(licenseCheck(request,"joe@example.com").Result);

Также рассмотрите возможность использования HttpClientFactory, если вы работаете в .NET Core:

https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

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