我正在尝试使用async await样式调用此API但存在一些问题。
public async Task<User> GetUser(int userId)
{
User user = null;
HttpResponseMessage response = await client.GetAsync("/user/...");
if(response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
user = JsonConvert.DeserializeObject<User>(result);
}
return user;
}
我在控制台应用中调用上述方法:
var user = apiClient.GetUser(123);
Console.WriteLine($"user result is {user.Result.UserId}");
我收到错误:
类型&#39; System.NullReferenceException的未处理异常 对象引用未设置为实例..
我的代码段遵循最佳做法是否有问题?
使用Postman进行测试时,我的端点工作正常。
更新
我的GetUser方法的接口是:
Task<User> GetUser(int userId);
答案 0 :(得分:0)
我做了以下操作,我也得到了一个错误,当我得到值时,我也得到了结果 response.Content.ReadAsStringAsync()。结果; ,但你也应该调试和检查你真的得到了一个json值。
string responseString = "";
...
if (response.IsSuccessStatusCode)
{
responseString = response.Content.ReadAsStringAsync().Result;
Message jsonObject = JsonConvert.DeserializeObject<Message>(responseString.ToString(),
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
...
}
答案 1 :(得分:-1)
始终初始化对象的最佳做法。
User user = new User(); // Ensuring it will return a empty object instead of null.
没有看到实际的完整代码,很难弄清楚什么是内部人员GetAsync(...)