我有一個RESTful Web API,它可以正常運行,因爲我可以使用Fiddler進行測試。我看到電話正在通過,我看到回覆。Web API調用不返回
我正在開發一款平板電腦應用程序,需要使用Web API才能在存儲庫中獲取數據或進行更新。
我的電話不會返回,並且在提琴手中沒有任何一個跟蹤顯示我的電話甚至到達服務器。
我需要做的第一個調用是登錄。該URI是這樣的:
http://localhost:53060/api/user
此調用通常會返回有關用戶的一些信息(如組成員身份,授權級別等)。 Web API使用Windows身份驗證,因此存儲庫能夠根據傳入的憑據解析所有這些字段。正如我所說的,在Fiddler中,我看到了對URI進行的三個調用,因爲身份驗證是在調用者和服務器之間協商的。第三次調用返回一個JSON對象,該對象包含所有從存儲庫生成的信息。現在
,移動到我的客戶,我有以下:
var webApiClient = new HttpClient(new HttpClientHandler()
{
UseDefaultCredentials = true
})
{
BaseAddress = new Uri("http://localhost:53060/")
};
webApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await webApiClient.GetAsync("api/user");
var userLoginInfo = await response.Content.ReadAsAsync<UserLoginInformation>();
我呼籲「GetAsync」永遠不會返回,就像我說的,我看到提琴手沒有它的蹤影。
任何想法我做錯了什麼?
TIA, 埃德
即使在模擬器中,平板電腦上的Localhost也不起作用。您需要使用機器名稱或IP進行測試。 – Nkosi
@Nkosi我不認爲這是因爲我已經看到它在Pluralsight的Jesse Liberty視頻中工作。他構建了一個Windows應用商店應用程序,並且在專門用於遠程數據的細分市場中,他構建了一個Web API,將數據提供給他的WinStore應用程序。他使用平板模擬器來演示訪問。他訪問Web API,將BaseAddress設置爲「http:// localhost:33263」。他不使用Windows身份驗證。那將是我所做的和他所做的之間的唯一區別。你是否說「localhost」在集成Windows身份驗證中不起作用?我會試一試 – Eddie
@Nkosi你可能一直都是對的。我將IIS Express配置爲使用IP地址公開我的Web API,現在我可以看到至少有一個HTTP GET經歷了。它產生401.在Fiddler中,一旦我檢查「自動驗證」複選框,有三個請求會通過身份驗證協商。最後一個返回所需的HTTP結果200.我必須弄清楚如何讓我的客戶端自動進行身份驗證。 – Eddie