簡體   English   中英

從另一個Web api調用Web api

[英]Calling a Web api from another Web api

是否有可能制作一個稱為另一個網絡API的Web API?

我使用下面的代碼從我的web 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控制器的action方法中調用遠程web api。

讓我們首先消除明顯的。

如果你在這個動作方法的開頭設置一個斷點,那么它會受到影響嗎? 如果沒有,那么問題在於路由而不是動作方法。

如果在if語句中設置斷點,它是否會被命中,或者client.GetAsync()調用是否永遠不會返回?

如果你還沒有完成,你可能希望使用像fiddler這樣的工具( http://www.telerik.com/fiddler )來比較api和這個破壞的工作使用的請求和響應。 我知道你說它與工作實現完全相同,但我發現提琴手非常有價值,無法確認“在網上”發送了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM