Xamarin не может преобразовать System.Threading.Tasks - PullRequest
0 голосов
/ 14 мая 2018

Я хочу вызвать сервер, вернуть результат в формате JSON и вернуть результат вызывающему методу.Ниже приведен мой код, который выполняет вызов на сервер:

public async Task<Dictionary<string,string>> callAjax(string mthd,Dictionary<string,string> values)
{
    HttpClient client = new HttpClient();

    var content = new FormUrlEncodedContent(values);
    var response = await client.PostAsync("http://dev.adex-intl.com/adex/mvc/receiving/"+mthd, content);
    var responseString = await response.Content.ReadAsStringAsync();
    Dictionary<string,string> result = JsonConvert.DeserializeObject<Dictionary<string, string>>((string)responseString);
    return result;
}

И это код, который вызывает вышеуказанный метод:

public void loginPressed(object sender, EventArgs e)
    {
        if(String.IsNullOrEmpty(badge.Text)) {
            DisplayAlert("Error", "Enter your badge number", "Ok");
        } else {
            IsBusy = true;
            var parameters = new Dictionary<string, string>
            {
               { "badgeNumber", badge.Text }
            };
            GlobalMethods globalMethods = new GlobalMethods();
            Dictionary<string,string> results = globalMethods.callAjax("login", parameters);
            var id = results["userid"].ToString();
        }
    }

Я получаю сообщение об ошибке компилятора "Не могунеявное преобразование типа 'System.Threading.Tasks.Task' "в строку" Словарь результатов = globalMethods.callAjax ("логин", параметры); "

1 Ответ

0 голосов
/ 14 мая 2018

callAjax - это асинхронный метод, поэтому вам нужно использовать await при его вызове

Dictionary<string,string> results = await globalMethods.callAjax("login", parameters);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...