gpt4 book ai didi

c# - 如何读取包含 Datetime 类型的 BaseHttpActionResult 的响应

转载 作者:行者123 更新时间:2023-11-30 16:45:03 25 4
gpt4 key购买 nike

我收到了使用 HTTP 协议(protocol)的客户端服务的 C# 代码。我需要添加一个返回 Datetime 类型的新操作,因此根据我在网上找到的内容(不确定我所做的是否正确),我扩展了一个已经存在的 BaseHttpActionResult 类:

public BaseHttpActionResult(HttpStatusCode code, DateTime content)
{
_code = code;
_content = content;
}

public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
var response = new HttpResponseMessage
{
StatusCode = _code,
Content = new ObjectContent(typeof(DateTime), _content, new JsonMediaTypeFormatter())
};

return Task.FromResult(response);
}

服务添加这个 Action :

[Route("StatusUpdate")]
[HttpGet]
public IHttpActionResult StatusUpdate()
{
return new BaseHttpActionResult(HttpStatusCode.OK, DateTime.Today);
}

和客户端请求:

public class HttpRequestsHandler
{
public static DateTime HttpGet(string requestUrl)
{
using (var handler = new WebRequestHandler())
{
handler.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

using (var httpClient = new HttpClient(handler)
{
BaseAddress = new Uri(requestUrl),
Timeout = Timeout.InfiniteTimeSpan
})
{
using (var response = httpClient.GetAsync(requestUrl).Result)
{
if (response.StatusCode != HttpStatusCode.OK)
{
var errorMessage = string.Format("HttpRequestTask: Request failed with status {0} for URL: {1}", response.StatusCode, requestUrl);
throw new HttpException(errorMessage, (int)response.StatusCode);
}
response.???????
}
}
}
}
}

问题是,如何从响应中读取 Datetime 值?我在网上看到有名为Content和Headers的方法和几个例子,但是我没看懂怎么用。。。

欢迎任何意见。

最佳答案

过于复杂的事情。如果您只需要返回来自 Web API 端点的日期时间,则使用现有功能

[Route("StatusUpdate")]
[HttpGet]
public IHttpActionResult StatusUpdate() {
return Ok(DateTime.Today);
}

至于获取响应,使用可用的扩展方法将响应转换为您想要的类型。

var result = response.Content.ReadAsAsync<DateTime>().Result;
return result;

应考虑使用强类型模型。

public class StatusUpdateResponse {
public DataTime Timestamp { get; set; }
}

这导致将操作更新为...

[Route("StatusUpdate")]
[HttpGet]
public IHttpActionResult StatusUpdate() {
return Ok(new StatusUpdateResponse { Timestamp = DateTime.Today });
}

var model = response.Content.ReadAsAsync<StatusUpdateResponse>().Result
return model.Timestamp;

关于c# - 如何读取包含 Datetime 类型的 BaseHttpActionResult 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886462/

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