Невозможно отправить данные формы в веб-API с помощью postasync - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь отправить значение sourceFile в web api. Но в API я получаю ноль

var formVars = new Dictionary<string, string>();
formVars.Add("sourceFile", "Helloo");

HttpContent content = new FormUrlEncodedContent(formVars);                   

var result = client.PostAsync("ImageApi/Compare", content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
return Content(resultContent);

Код API

[HttpPost()]
public ActionResult Compare(string sourceFile)
{
   return Ok(sourceFile);
}

Я использую ядро ​​DotNet 2.0

1 Ответ

0 голосов
/ 22 января 2019

вам нужно дождаться результата, не пытайтесь получить доступ. Результат самостоятельно. В этот момент вызов не был бы завершен.

вам нужно использовать что-то вроде этого:

HttpContent content = new FormUrlEncodedContent(formVars);                   

var result = await client.PostAsync("ImageApi/Compare", content);
result .EnsureSuccessStatusCode();
string responseBody = await result.Content.ReadAsStringAsync();

Это основано на вашем коде и не было протестировано, но должно установить правильный путь, чтобы это заработало. Никогда не пытайтесь выполнять асинхронную работу, получая доступ к .Result.

Еще одна вещь, вам также нужно использовать модель.

создайте класс модели, который имеет все свойства, которые вы добавляете в свой словарь.

в вашем случае это будет что-то вроде:

public class MyModel{
     public string sourceFile { get ;set; }
}

ваш контроллер становится:

[HttpPost()]
public ActionResult Compare([FromBody]MyModel model)
{
   return Ok(model.sourceFile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...