gpt4 book ai didi

c# - 代理调用远程 json 以避免 CORS 问题

转载 作者:太空狗 更新时间:2023-10-30 01:29:42 26 4
gpt4 key购买 nike

我开发了一个角度应用程序,它需要使用来自远程服务器的 json 数据。由于 CORS 问题,应用程序无法直接从该服务器获取数据。我的解决方案是开发一个“代理”web api 来读取该 json 并将其返回给我的应用程序。目前,这是我正在做的方式:

public async Task<IActionResult> MyJson()
{
const string jsonUrl = "url-of-remote-json";
using (var client = new HttpClient())
{
using (var result = await client.GetAsync(jsonUrl))
{
if (result.IsSuccessStatusCode)
{
return new ObjectResult(JsonConvert.DeserializeObject(await result.Content.ReadAsStringAsync()));
}
}
}

return new ObjectResult(new { });
}

但是,我认为这远不是一种有效的方法,因为我必须将 json 读取为字符串,然后使用 JsonConvert 包将其转换为对象以提供给 web api 方法。因此,性能并不是很好。

我想知道是否有更简单/高效/更简单的方法来完成这项任务?

最佳答案

只是通过来自远程服务器的响应。查看编辑后的示例。

public async Task MyJson()//void if not async
{
string jsonUrl = "url-to-json";
HttpContext.Response.ContentType = "application/json";
using (var client = new System.Net.WebClient())
{
try
{
byte[] bytes = await client.DownloadDataTaskAsync(jsonUrl);
//write to response stream aka Response.Body
await HttpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);
}
catch (Exception e)//404 or anything
{
HttpContext.Response.StatusCode = 400;//BadRequest
}
await HttpContext.Response.Body.FlushAsync();
HttpContext.Response.Body.Close();
}
}

按预期工作。

关于c# - 代理调用远程 json 以避免 CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com