【发布时间】:2022-12-23 00:06:48
【问题描述】:
一个简单的登录方法,在我关闭我的 API 之前都可以正常工作。然后 try-catch 块按预期运行,抛出并捕获异常,但是 _response 出现状态代码“200,OK”。为了我的爱,我不知道为什么。请帮忙!
代码看起来很糟糕,主要是因为我正在对它进行所有修补和测试以弄清楚发生了什么。
HttpResponseMessage response = null;
public async Task<HttpResponseMessage> login(AuthModel model)
{
HttpResponseMessage response = null;
model.responseMessage = "";
var client = new HttpClient();
string text = "{\"email\": \""+model.email+"\",\"password\": \""+model.password+"\"}";
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri(_baseURL+"/api/user/login"),
Content = new StringContent(text, Encoding.UTF8, "application/json")
};
try
{
using (response = await client.SendAsync(request))
{
HttpResponseMessage _response = null;
//response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
{
//_response = response;
var body = await response.Content.ReadAsStringAsync();
var token = response.Headers.GetValues("auth-token").FirstOrDefault();
model.authToken = token;
model.name = body;
model.responseMessage = "Congratulations!";
return _response;
}
else
{
model.name = "";
model.responseMessage = await response.Content.ReadAsStringAsync();
return _response;
}
}
}
catch(Exception e) {
// model.responseMessage = e.Message;
return _response;
}
【问题讨论】:
-
你在哪里设置
_response? -
“_response 的状态代码为“200,OK””- 根据显示的代码,
_response是总是null。“代码看起来很糟糕,主要是因为我正在做的所有修补和测试”- 听起来它也达到了你甚至不确定哪个版本的代码产生了什么结果的地步。现在是您简化和清理一些事情的好时机。请提供一个minimal reproducible example,它可以准确且仅演示您所描述的问题,并具体指出哪个操作显示了意外结果。 -
我刚刚意识到将 _response 初始化为 new() HttpResponseMessage 将 StatusCode 设置为“200”……对不起那些人。
标签: c# dotnet-httpclient