代码之家  ›  专栏  ›  技术社区  ›  Hoàng Nguyễn

asp.net core 2.x-HttpClient api返回错误“对象引用未设置为对象实例”

  •  0
  • Hoàng Nguyễn  · 技术社区  · 6 年前

    我有一个公共API( https://api.bitfinex.com/v1/pubticker/ethusd )通过发送 httpClient

    private readonly HttpClient _httpClient;
    private const string apiUri = "https://api.bitfinex.com/v1/pubticker/ethusd";
    
    public DataController(
      HttpClient httpClient
    )
    {
      httpClient = _httpClient;
    }
    
    [HttpGet("ticker")]
    [ProducesResponseType(typeof(Ticker), 200)]
    public async Task<IActionResult> GetTicker()
    {
      HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, apiUri);
      requestMessage.Headers.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json")
      );
    
      var response = await _httpClient.SendAsync(requestMessage);
    
      return Ok(response);
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Chris Pratt    6 年前

    问题是试图序列化来自 HttpClient

    using (var response = await _httpClient.SendAsync(requestMessage))
    {
        var content = await response.Content.ReadAsAsync<SomeClass>();
        return Ok(content);
    }
    

    或者,如果不使用可以映射到的类,并且不希望创建类,则可以直接使用JSON.NET手动反序列化响应内容:

    using (var response = await _httpClient.SendAsync(requestMessage))
    {
        var content = await response.Content.ReadAsStringAsync();
        var model = JsonConvert.DeserializeObject(content);
        return Ok(model);
    }