C# HttpClient JsonReaderException解析值时出现意外字符 上下文-我们的代码

C# HttpClient JsonReaderException解析值时出现意外字符 上下文-我们的代码,c#,asp.net-web-api,asp.net-core,.net-core,dotnet-httpclient,C#,Asp.net Web Api,Asp.net Core,.net Core,Dotnet Httpclient,重定向API Http GET调用时遇到错误。我在stackoverflow中搜索了类似的问题,但它似乎与我们的问题不同 我们有一个简单的场景。我们的解决方案是作为API调用“网关”的后端 从angular客户端,我们调用/api/values,它必须重定向到http://example.com:8080/api/values 因此,我们开始了一个.NET核心API项目,并尝试从API控制器简单地进行API客户端调用 以下是原始类: namespace WebApplication2.Contr

重定向API Http GET调用时遇到错误。我在stackoverflow中搜索了类似的问题,但它似乎与我们的问题不同

我们有一个简单的场景。我们的解决方案是作为API调用“网关”的后端

从angular客户端,我们调用/api/values,它必须重定向到
http://example.com:8080/api/values

因此,我们开始了一个.NET核心API项目,并尝试从API控制器简单地进行API客户端调用

以下是原始类:

namespace WebApplication2.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        // GET api/values
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}
在.NET中得到的响应
好的,通过定义响应模型解决了这个问题。比如

public class DocumentInfo
    {
        public int errorCode;
        public string docId;
        public int status;
    }
然后按如下方式键入:

var retValue = new DocumentInfo();
retValue = await response.Content.ReadAsAsync<DocumentInfo>();
var retValue=newdocumentinfo();
retValue=wait response.Content.ReadAsAsync();
关于方法:

 public async Task<DocumentInfo> Get()
公共异步任务Get() 后续问题
有没有办法不强键入返回的结果?如果它从远程API更改(例如,如果他们添加了“所有者”属性),它将中断?

这一行就是问题所在

retValue = await response.Content.ReadAsAsync<string>();

您应该会得到所需的结果。

这看起来像是一个序列化的
HttpResponseMessage
。第二次调用结束时,会将该对象作为模型传回。在一个不相关的问题上,请重用您的HttpClient实例,而不是每次都创建一个新实例。谢谢,它也能工作!我的想法是直接强力键入答案,但我更喜欢将原始json作为字符串,然后将其“重新转换”为json。在这种情况下,即使远程API在答案中添加键/值,我的脚本也不会中断。
var retValue = new DocumentInfo();
retValue = await response.Content.ReadAsAsync<DocumentInfo>();
 public async Task<DocumentInfo> Get()
retValue = await response.Content.ReadAsAsync<string>();
retValue = await response.Content.ReadAsStringAsync();