从另一个 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>();
}
}
我也遇到了同样的问题,经过大量研究,我发现如果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的请求和响应。 我知道你说它与工作实现相同,但我发现小提琴手对于准确验证"在网络上"发送的内容非常宝贵。