从另一个 Web API 调用 Web api

本文关键字:Web api 调用 API 另一个 | 更新日期: 2023-09-27 17:56:39

是否有可能以某种方式制作一个调用另一个Web api的Web api?

我正在使用下面的代码从我的网络 API 访问 Web api,但它永远不会从调用中返回。如果我使用控制台应用程序中的代码,它工作正常。

public void DoStuff(){
    RunAsync().Wait();
}
public static async Task RunAsync(){
using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:53452/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    // HTTP GET
    HttpResponseMessage response = await client.GetAsync("umbraco/api/Member/Get?username=test");
    if (response.IsSuccessStatusCode)
    {
        string user = await response.Content.ReadAsAsync<string>();
    }
}

从另一个 Web API 调用 Web api

我也遇到了同样的问题,经过大量研究,我发现如果HttpClient返回错误 500,await运算符不会停止工作。
为了解决这个问题,我使用了Task.Wait().

var response = client.GetAsync ("umbraco/api/Member/Get?username=test");
response.Wait ();

我希望这对其他人有所帮助。

是的,您可以在 Web API

控制器的操作方法中调用远程 Web API。

让我们先消除显而易见的。

如果在此操作方法的开头设置了断点,则命中了它是否正确? 如果不是,则问题出在路由而不是操作方法上。

如果在 if 语句处设置断点,它会被命中还是客户端。GetAsync() 调用永远不会返回?

如果你还没有这样做,你可能希望使用像fiddler(http://www.telerik.com/fiddler)这样的工具来比较API和这个损坏的API的请求和响应。 我知道你说它与工作实现相同,但我发现小提琴手对于准确验证"在网络上"发送的内容非常宝贵。