我创造了
当我调试时,我可以看到我的客户端发送请求到web,web接收到它并返回一个响应。但似乎我的客户和客户永远都在等待。
我尝试将Postman工具用于我的Web,并以json形式收到了很好的响应
我还试着用Fiddle来看看哪里出了问题。它显示了一个向下箭头,表示正在从服务器读取响应。它没有显示任何错误代码。
有人能建议我可能做错了什么吗。
API:
// GET: api/Account
public IEnumerable<Account> Get()
{
//return new string[] { "value1", "value2" };
Account a = new Account(100, "RES", new Customer(1, "K", "M"), new Premise(1, "2225", "City A", "Ohio"));
Account a1 = new Account(101, "RES", new Customer(1, "R", "M"), new Premise(1, "Prior Road", "Texas", "US"));
Account a2 = new Account(102, "RES", new Customer(1, "A", "M"), new Premise(1, "estern Road", "NY", "US"));
List<Account> list = new List<Account>();
list.Add(a);
list.Add(a1);
list.Add(a2);
return (list);
}客户:
public async Task<List<Account>> SelectAllAccounts()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://localhost:62617/api/");
//HTTP GET
var response = await client.GetAsync("Account");
var myInstance = JsonConvert.DeserializeObject<Account>(await response.Content.ReadAsStringAsync());
List<Account> a= null;
a.Add(myInstance);
return a;
}
}发布于 2019-09-01 05:23:41
在您的简单示例中存在一些排版,应该修改如下:
// GET: api/Account
public List<Account> Get()
{
Account a = new Account(100, "RES", new Customer(1, "K", "M"), new Premise(1, "2225", "City A", "Ohio"));
// ...
// ... Your Code here
// ...
list.Add(a2);
return list;
}而且,您还需要修改客户端:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:62617/");
HttpResponseMessage response = client.GetAsync("api/Account").Result;
string _content = await response.Content.ReadAsStringAsync();
List<Account> myInstance = JsonConvert.DeserializeObject<List<Account>>(_content);
return myInstance;
}您可以return myInstance或返回View(myInstance),也可以将其作为JsonResult返回,无论哪种情况适合您的需要。例如:
return Json(new { Status = 200, LIST = myInstance}, JsonRequestBehavior.AllowGet);但是,有时最好将_content作为string返回,并让反序列化在最后一刻进行。
关于更多信息,下面是关于如何在ASP.Net MVC框架中创建和使用Rest的简单示例:
发布于 2019-09-01 12:06:36
与返回IEnumerable不同,我建议返回HttpResponseMessage,并将ContentType设置为application/json。你的api会是这样的,
HttpResponseMessage httpResponseMessage = this.Request.CreateResponse<List<Account>>(HttpStatusCode.OK, list);
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return httpResponseMessage;在客户端代码中,当您返回集合而不是仅仅帐户时,您必须反序列化列表。因此,客户端代码的更改将是
var myInstance = JsonConvert.DeserializeObject<List<Account>>(await response.Content.ReadAsStringAsync());已经试过和测试了。:-)
https://stackoverflow.com/questions/57743153
复制相似问题