gpt4 book ai didi

api - 如何使用Flurl从API获取消息?

转载 作者:行者123 更新时间:2023-12-03 22:48:27 27 4
gpt4 key购买 nike

我已经使用C#在.NET Core 2中创建了一个API。它返回带有状态代码和字符串消息的ActionResult。在另一个应用程序中,我使用Flurl调用API。我可以获得状态码编号,但是找不到消息的方式。我如何获取消息,或者需要什么更改API才能以某种方式将消息放入Flurl可以获取?

这是API的代码。在此示例中,“消息”为“对不起!”。

[HttpPost("{orderID}/SendEmail")]
[Produces("application/json", Type = typeof(string))]
public ActionResult Post(int orderID)
{
return StatusCode(500, "Sorry!");
}

这是另一个调用API的应用程序中的代码。我可以使用 (int)getRespParams.StatusCode获取状态代码编号(500),并使用 getRespParams.StatusCode获取状态代码文本(InternalError),但是如何获得“抱歉!”信息?

var getRespParams = await $"http://localhost:1234/api/Orders/{orderID}/SendEmail".PostUrlEncodedAsync();
int statusCodeNumber = (int)getRespParams.StatusCode;

最佳答案

PostUrlEncodedAsync返回 HttpResponseMessage 对象。要将主体作为字符串获取,只需执行以下操作:

var message = await getRespParams.Content.ReadAsStringAsync();

要注意的一件事是,默认情况下,Flurl在非2XX响应上引发异常。 (这是 configurable)。通常,仅在调用失败时才关心状态代码,因此典型的模式是使用try/catch块:

try {
var obj = await url
.PostAsync(...)
.ReceiveJson<MyResponseType>();
}
catch (FlurlHttpException ex) {
var status = ex.Call.HttpStatus;
var message = await ex.GetResponseStringAsync();
}

这里的一个优点是,可以在成功的情况下使用Flurl的 ReceiveJson直接获取响应主体,并在catch块中分别获取错误主体(形状不同)。这样,您根本不需要处理反序列化“原始” HttpResponseMessage的问题。

关于api - 如何使用Flurl从API获取消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50630831/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com