2015-06-17 91 views
4

是否有可能做出調用另一個web api的Web api?從另一個Web api調用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>(); 
    } 
} 
} 
+0

這是一個umbraco API,您正嘗試在您的Web API中調用? –

+2

顯示完整的方法聲明以及如何調用它(異步方法)。 –

+0

是的我正在調用一個Umbraco API函數(我自己的函數)。 – PNR

回答

0

是的,你可以在web api控制器的action方法內調用遠程web api。

讓我們消除明顯的第一個。

如果設置在這個動作方法被擊中右側開始斷點?如果不是,那麼問題在於路由而不是操作方法。

如果設置在if語句是否得到擊中斷點或者是client.GetAsync()調用不退還?

如果您還沒有完成,您可能希望使用像fiddler(http://www.telerik.com/fiddler)這樣的工具來比較請求&對api的使用情況的響應以及此破壞的響應。我知道你說過它和正在運行的實現是一樣的,但我發現提琴手無法確切地證實「在線」上發送了什麼。

+0

我正在使用Fiddler,但它從不會調用其他API,所以Fiddler只顯示第一個調用「第一個」api。 調試時,它只是從來沒有從回來「等待client.GetAsync(」一把umbraco/API /會員/獲取用戶名=測試?「);」,沒有錯誤 – PNR

+0

玉以及那是後話。如果提琴手在電線上沒有顯示任何內容,則不僅僅是沒有迴應,也沒有要求。你能否提供整個行動方法,因爲問題可能在於你提供的代碼的「上游」。簡短的回答是,提供的代碼應該可以工作。 api控制器的動作方法只是一種方法。它內部的執行應該與另一個方法(即你的控制檯測試應用程序)內的執行沒有區別。 –

+0

我嘗試調用Umbraco API時遇到了同樣的問題,http://stackoverflow.com/questions/24508306/umbraco-ajax-call-not-working。我不知道這是否適合你。 –