gpt4 book ai didi

asp.net-mvc - 在 MVC4 上使用 HttpClient 进行异步调用

转载 作者:行者123 更新时间:2023-12-04 14:46:56 27 4
gpt4 key购买 nike

我正在 .net 4.5 中使用这项新技术,我想检查此调用的代码以及我应该如何控制异步调用的错误或响应。
调用工作正常,我需要完全控制从我的服务返回的可能错误。

这是我的代码:

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;

namespace TwitterClientMVC.Controllers
{
public class Tweets
{
public Tweet[] results;
}

public class Tweet
{
[JsonProperty("from_user")]
public string UserName { get; set; }

[JsonProperty("text")]
public string TweetText { get; set; }
}
}

public async Task<ActionResult> Index()
{
Tweets model = null;

HttpClient client = new HttpClient();

HttpResponseMessage response = await client.GetAsync("http://mywebapiservice");

response.EnsureSuccessStatusCode();

model = JsonConvert.DeserializeObject<Tweets>(response.Content.ReadAsStringAsync().Result);

return View(model.results);
}

这是更好的方法吗?或者我错过了什么?
谢谢

我重构它,这个方法也是异步的吗?
public async Task<ActionResult> Index() 
{
Tweets model = null;
using (HttpClient httpclient = new HttpClient())
{
model = JsonConvert.DeserializeObject<Tweets>(
await httpclient.GetStringAsync("http://search.twitter.com/search.json?q=pluralsight")
);
}
return View(model.results);
}

最佳答案

Is this the better way to do it?


response.EnsureSuccessStatusCode();如果您的远程服务返回的状态码与 2xx 不同,则会抛出异常。所以你可能想使用 IsSuccessStatusCode如果您想自己处理错误,则改为使用属性:
public async Task<ActionResult> Index()
{
using (HttpClient client = new HttpClient())
{
var response = await client.GetAsync("http://mywebapiservice");

string content = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
var model = JsonConvert.DeserializeObject<Tweets>(content);
return View(model.results);
}

// an error occurred => here you could log the content returned by the remote server
return Content("An error occurred: " + content);
}
}

关于asp.net-mvc - 在 MVC4 上使用 HttpClient 进行异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274670/

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