c# - 我可以得到在 http 请求中返回的实际错误吗?
问题描述
目前我正在调用一个api,如下所示:
public static string MyAPICall()
{
try
{
var client = new RestClient(_uri);
var request = new RestRequest { Method = Method.GET,
Resource=$"version1/status" };
var response = client.Execute(request);
return response.StatusCode.ToString();
}
catch
{
return HttpStatusCode.BadRequest.ToString();
}
}
现在,如果成功,状态码应该可以,否则就不会。我做了一些检查如下:
var err = string.empty;
var apicallResponse = MyAPICall();
if (apicallStaresponse.ToLower() != "ok")
{
err = "please contact your Administrator";
}
我怎样才能让事情变得更有意义,我怎样才能返回实际错误,是否需要返回实际异常而不是 HttpStatusCode.BadRequest.ToString()?
解决方案
您应该首先捕获异常。而不是这个:
try
{ ... some code with request ... }
catch
{ .. guessing what the error was here ... }
用这个:
try
{ ... some code with request ... }
catch(Exception exc)
{ .. now you have at least a message here... }
然后你必须知道 API 返回什么。有一组标准的 Http 状态代码,其中 200 表示 OK。再次检查您正在使用的 API 以查看您可能得到的响应。
推荐阅读
- teradata-sql-assistant - Teradata ODBC 成功连接但无法通过 Bteq 工作
- linux - 如何编译 opusfile 或 opustools?
- c++ - c++中cout中的“,”和“<<”之间的区别?
- masstransit - 使用 Docker Compose 的托管服务 RabbitMQ 连接失败
- android - WorkManager 内的回调不起作用
- google-apps-script - 如何通过 Apps 脚本删除带有选项卡名称的命名范围
- cordova - 开放托克 | 订阅流错误 | 1600 - OTSubscriberWebRTC错误
- c++ - 如何编写操作重载代码,使其对特定的类成员进行操作,例如 C++ 中的 A<<{{1,2,3},{5,6,7}}?
- python - 带字数限制的随机密码生成器
- python - 从二进制数据python恢复图像