[英]Retrieving the response from Rest API
我正在创建一个调用其他第三方API的API。 第三方API是REST API,当我在网络浏览器中调用它时,会以JSON格式返回响应
[{"Acc":"IT","Cnt":"023","Year":"16"}]
当我从我的API调用第三方API时,我试图获得相同的响应。
public IHttpActionResult Get(string acctID)
{
using (var client_EndPoint= new HttpClient())
{
Uri uri_EndPoint = new Uri(BaseURL_EndPoint);
client_EndPoint.BaseAddress = uri;
client_EndPoint.DefaultRequestHeaders.Accept.Clear();
client_EndPoint.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string EndPoint_URL = BaseURL_EndPoint+"api/NameCreation?Account="+acctID;
var response_EndPoint = client_EndPoint.GetAsync(EndPoint_URL).Result;
string responseString = response_EndPoint.Content.ReadAsStringAsync().Result;
return Ok(responseString);
}
}
我一直在做的事情是通过字符串从第三方API获取响应。 但是我正在检查是否有一种方法可以获取JSON格式,以便可以直接返回它们。 get方法的返回类型为IHttpActionResult
。 如果我以字符串形式返回,则响应如下所示
"[{\"Acc\":\"adm\",\"Cnt\":\"001\",\"Year\":\"16\"}]"
任何帮助是极大的赞赏。
创建一个模型来保存其余api数据
public class Model {
public string Acc { get; set; }
public string Cnt { get; set; }
public string Year { get; set; }
}
从api反序列化
var response_EndPoint = await client_EndPoint.GetAsync(EndPoint_URL);
var models = await response_EndPoint.Content.ReadAsAsync<Model[]>();
然后返回
return Ok(models);
完整的例子
public async Task<IHttpActionResult> Get(string LabName) {
using (var client_EndPoint = new HttpClient()) {
//...other code removed for brevity
var response_EndPoint = await client_EndPoint.GetAsync(EndPoint_URL);
var models = await response_EndPoint.Content.ReadAsAsync<Model[]>();
return Ok(models);
}
}
您可以使用Newtonsoft.Json,只需从nuget中添加它,并将此配置添加到webapiconfig中:
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling =
Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
然后使用
return Json(responseString)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.