我在我的Controller中使用此方法有一个MVC Web API:
[HttpPost]
public void InsertSomething([FromBody] List<MyClass> newList)
{
...
}
MyClass的: 这个类在Android项目中与在WebAPI项目中一样。它们具有相同的属性,类型和名称。
public class MyClass
{
public int Id {get; set;}
public string Name {get; set;}
}
我想从我的代码中调用它,但我不知道如何。我正在使用xamarin Android。
这是我尝试的代码:
HttpClient client = new HttpClient();
List<MyClass> newList = new List<MyClass>();
newList.Add(new MyClass(){ Id = 5, Name = "test1"});
newList.Add(new MyClass(){ Id = 8, Name = "test2"});
string url = "http://localhost:57750/api/ControllerName/InsertSomething";
var content = new StringContent(JsonConvert.SerializeObject(newList),Encoding.UTF8,"application/json");
var result = client.PostAsync(url, content);
问题是我的代码没有调用web方法。
当我调试代码时,调用client.PostAsync时,应用程序就会等待。没有例外。
有些想法吗?
谢谢!
PS:对不起,我的英文不好xd
答案 0 :(得分:-1)
方法client.PostAsync返回一个任务,你应该使用async await pattern等待结果:
var result1 = await client.PostAsync(url, content);
或.Result如下调用:
var result2 = client.PostAsync(url, content).Result;
程序可能会在HttpClient发出请求之前退出,您应该明确等待调用的结果。