由于数据提供商实施的安全性变更,我们必须修改其中一个项目。目前,系统是开放的,我们直接从源端在客户端实现了ajax数据检索,但是提供商通知他们将实施IP锁定并告诉我们需要实现某种形式的代理。我们考虑了一下,并决定我们应该尝试另一条路线,而是在我们的IIS服务器上加载和缓存他们的数据,并通过对我们自己的服务器的ajax调用将其提供给我们的客户。它还允许我们的BU对数据进行一些汇总分析。
话虽这么说,从控制器代码向外部源发出JSON http / s请求并对服务器端处理反序列化JSON的最佳/推荐方法是什么?如果它很重要,ajax文档的格式是静态的,它不会改变(意思是,如果需要,我们可以为它创建模型类)。
答案 0 :(得分:4)
我希望这有帮助。我使用类似的东西来制作youtube api调用并将JSON响应转换为我自己的模型。
"{result: [{ name: \"Joe Doe\", age: 23 }]}"; // json format coming back from external url
using (var client = new HttpClient())
{
var response = await client.GetAsync("URL");
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
dynamic values = JsonConvert.DeserializeObject<dynamic>(content);
var people = new List<Person>();
foreach (var item in values.result)
{
var person = new Person
{
Name = item.name,
Age = item.age
};
people.Add(person);
}
return people;
人物模型:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}