HttpResponseMessage PostAsyn c не отвечает - PullRequest
0 голосов
/ 17 января 2020

Я не получаю никакого ответа, используя client.PostAsyn c. Я создал кнопку в формах xamarin. Он должен отправить на сервер несколько предложений (json) и вернуть информацию о них (снова в json). Код кнопки:

private async void button_Analyze_Clicked(object sender, EventArgs e)
    {
        Request req = new Request()
        {
            UserId = this.UserId,

            Language = Convert.ToString(picker_Language.SelectedItem) + ".",

            Text = Convert.ToString(editor1.Text)
        };
        string jsonStr = JsonConvert.SerializeObject(req);

        Dictionary<string, string> dict = new Dictionary<string, string>();
        dict.Add("s", jsonStr);

        FormUrlEncodedContent form = new FormUrlEncodedContent(dict);

        HttpResponseMessage response = await client.PostAsync(markTextUrl, form).ConfigureAwait(false);
        string result = await response.Content.ReadAsStringAsync();
        Answer answ = JsonConvert.DeserializeObject<Answer>(result);
        answersList.Add(answ);

        await DisplayAlert("", " ", "Ok");
    }

Код контроллера:

public string MarkText(string s) //работа с запросом из приложения
        {
            Request req = JsonConvert.DeserializeObject<Request>(s);


            if (req != null)
            {
                Models.Request request = new Models.Request()
                {
                    Text = req.Text,
                    Lang = req.Language,
                    UserId = int.Parse(req.UserId)
                };
                AnalyzeRequest(request);   

                Answer answ = new Answer()
                {
                    Language = req.Language,
                    Text = req.Text,
                    Sentences = db.Histories.Last().Text,
                    Labels = db.Histories.Last().Label   
                };

                return JsonConvert.SerializeObject(answ);
            }
            return null;
        }

Проблема в том, что этот код

HttpResponseMessage response = await client.PostAsync(markTextUrl, form).ConfigureAwait(false);

никогда не возвращает ответ, и он не достигает функции контроллера. Если я дождусь завершения этого кода, я получу System.OperationCanceledExeption: «Операция была отменена»

...