.net C# ReadAsAsync在Postman返回数据时返回null

jxct1oxe  于 2023-02-14  发布在  .NET
关注(0)|答案(1)|浏览(243)

我有一个API,它实际上在内部调用另一个api,并传递回那些结果。

httpClient.DefaultRequestHeaders.Authorization =
     new AuthenticationHeaderValue("Bearer", BearerToken);

HttpResponseMessage response = await httpClient.GetAsync(fullUrlPath);
if (response.IsSuccessStatusCode)
{
     return Ok(await response.Content.ReadAsAsync<Sheet>());
}
return BadRequest();

它命中response.IsSuccessStatusCode并进入ReadAsAsync方法,但数据返回null。我在postman中测试了相同的内容并获得了数据。不确定是否是语法问题。数据对象是从postman响应中复制的。

jbose2ul

jbose2ul1#

我也遇到过类似的问题,
我发现这是由于NewtonSoft.Json未按预期工作造成的。反序列化时,它无法匹配正确的Json属性,这可能导致接收空内容。
如果遇到问题,可以先检查状态码,然后将输出打印为字符串,看是否有内容。
var res = await Response.Content.ReadAsStringAsync();
如果内容看起来正确,则可能是由于未成功去串行化引起的。
如果您正面临上述相同的问题,解决方法很简单:
用途:using Newtonsoft.Json;JsonProperty(PropertyName = "your_property")(我忘记键入PropertyName =,可能导致问题)
或者只使用dotnet提供的System.Text.Json.Serialization

using System.Text.Json.Serialization;

namespace Project.Models;

public class TokenResponse
{
    [JsonPropertyName("access_token")]
    public string AccessToken { get; set; }
}

相关问题