从C#调用POST方法

时间:2017-08-22 18:10:37

标签: c# asp.net-mvc asp.net-web-api xamarin.android

我在我的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

1 个答案:

答案 0 :(得分:-1)

方法client.PostAsync返回一个任务,你应该使用async await pattern等待结果:

var result1 = await client.PostAsync(url, content);

或.Result如下调用:

var result2 = client.PostAsync(url, content).Result;

程序可能会在HttpClient发出请求之前退出,您应该明确等待调用的结果。