C# 返回数组值的ASP.NETWebAPI
ASP.NETWebAPI非常新。对于调用另一个ASHX服务的API调用,在正确的API配置(和返回类型)方面存在一些问题 我有以下代码(在HomeController中测试只是为了验证服务调用是否有效): 希望能对解决这个问题有一些见解。关于在WebAPI中返回数据库查询,我有一些想法,但是服务调用(和异步方法)有点让我感到不舒服 谢谢 **更新***** 我们能够找到一些解决这个问题的方法,我正在发布我的解决方案C# 返回数组值的ASP.NETWebAPI,c#,asp.net-web-api,C#,Asp.net Web Api,ASP.NETWebAPI非常新。对于调用另一个ASHX服务的API调用,在正确的API配置(和返回类型)方面存在一些问题 我有以下代码(在HomeController中测试只是为了验证服务调用是否有效): 希望能对解决这个问题有一些见解。关于在WebAPI中返回数据库查询,我有一些想法,但是服务调用(和异步方法)有点让我感到不舒服 谢谢 **更新***** 我们能够找到一些解决这个问题的方法,我正在发布我的解决方案 public class ClientAddressController: A
public class ClientAddressController: ApiController
{
public async Task<IHttpActionResult> GetClientAddress()
{
WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");
var response = await request.GetResponseAsync();
string content;
using (var stream = response.GetResponseStream())
using(var reader = new StreamReader(stream))
{
content = await reader.ReadToEndAsync();
}
var result = JsonConvert.DeserializeObject<MyResult[]>(content);
return Ok(result);
// How to return the result object??
}
}
public class MyResult
{
public string ClientAddress { get; set; }
}
公共类ClientAddressController:ApicController
{
公共异步任务GetClientAddress()
{
WebRequest=WebRequest.CreateHttp(“http://callme/address.ashx");
var response=wait request.GetResponseAsync();
字符串内容;
使用(var stream=response.GetResponseStream())
使用(变量读取器=新的流读取器(流))
{
content=wait reader.ReadToEndAsync();
}
var result=JsonConvert.DeserializeObject(内容);
返回Ok(结果);
//如何返回结果对象??
}
}
公共类MyResult
{
公共字符串客户端地址{get;set;}
}
附言:我将接受@Stripling的回答,因为他的回答为我提供了一些指导。您需要创建一个带有
Address
属性的类,并将结果映射到该类的对象:
public async IQueryable<ClientAddressResult> GetClientAddress()
{
WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");
var response = await request.GetResponseAsync();
string content;
using (var stream = response.GetResponseStream())
using(var reader = new StreamReader(stream))
{
content = await reader.ReadToEndAsync();
}
IEnumerable<MyResult> result = JsonConvert.DeserializeObject<MyResult[]>(content);
return result.Select(r => new ClientAddressResult{Address = r.ClientAddress})
.AsQueryable();
}
您可以将数组值作为动态列表返回,以便能够使用动态列表执行set方法返回
var resultList = new List<dynamic>();
resultList.Add(new {Address="Address 100"});
resultList.Add(new {Address="Address 200"});
resultList.Add(new {Address="Address 300"});
return resultList;
var resultList=newlist();
Add(新的{Address=“Address 100”});
Add(新的{Address=“Address 200”});
Add(新的{Address=“Address 300”});
返回结果列表;
希望这就是你想要的
public class ClientAddressController: ApiController
{
public async Task<IHttpActionResult> GetClientAddress()
{
WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");
var response = await request.GetResponseAsync();
string content;
using (var stream = response.GetResponseStream())
using(var reader = new StreamReader(stream))
{
content = await reader.ReadToEndAsync();
}
var result = JsonConvert.DeserializeObject<MyResult[]>(content);
return Ok(result);
// How to return the result object??
}
}
public class MyResult
{
public string ClientAddress { get; set; }
}
public async IQueryable<ClientAddressResult> GetClientAddress()
{
WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");
var response = await request.GetResponseAsync();
string content;
using (var stream = response.GetResponseStream())
using(var reader = new StreamReader(stream))
{
content = await reader.ReadToEndAsync();
}
IEnumerable<MyResult> result = JsonConvert.DeserializeObject<MyResult[]>(content);
return result.Select(r => new ClientAddressResult{Address = r.ClientAddress})
.AsQueryable();
}
public class MyResult
{
public string ClientAddress { get; set; }
}
public class ClientAddressResult
{
public string Address { get; set; }
}
var resultList = new List<dynamic>();
resultList.Add(new {Address="Address 100"});
resultList.Add(new {Address="Address 200"});
resultList.Add(new {Address="Address 300"});
return resultList;