2016-12-13 106 views
0

我正在構建一個Xamarin.Forms應用程序的Android和iOS應該消耗一個API。 API是一種以REST精神構建的API,我在本地IIS Express服務器上託管API,我的Android模擬器沒有發現它的問題(在各種終端上測試過,我也可以顯示api-doc)。 我試圖聯繫http://IPOfMyComputer/api/Stuffs端點,它給了我一個JSON的東西列表。使用Postman我成功地獲得了我需要的所有東西,在這種情況下是一個有效的身份驗證令牌,以構建適當的HTTP GET請求。我使用Microsoft.Net.Http NuGet包來構建這個請求,因爲它似乎是完成這項工作的合適工具。我正在做Xamarin.Forms「Main」項目中的這個請求構建過程(不是iOS或Android的項目,另一個我不知道如何命名Visual Studio自動命名)。在Xamarin.Forms HTTP請求

我的代碼如下所示:

var rootUri = "http://IPOfMyComputer" 
var requestedUri = "/api/Stuffs" 
var client = new HttpClient(); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", 
"blablabla"); 
var response = await client.GetAsync(rootUri + requestedUri); 

這給我上的最後一個指令錯誤「NotSupportedException異常」。 我在這裏很笨,所以一些幫助將非常感激。
編輯
正確的錯誤消息是 「System.InvalidCastException:指定的轉換無效。」

+0

任何進一步的錯誤的細節?例外是否說別的? –

+0

什麼不支持?你有內在的例外嗎? –

+0

你好,我回到了我的工作站,這裏是我從VS得到的錯誤消息: System.InvalidCastException:指定的轉換無效。 – Mebius

回答

0

我發現該錯誤的來源:
原來,它沒有直接與GetAsync方法鏈接,但與異步/等待使用相關的代碼中有一些混亂。
到處都是一堆蹩腳的代碼。我放棄了這一切,回到常規的MVVM邏輯,並將異步/等待邏輯放入事件處理程序調用的方法中(而不是試圖爲一個類「創建」一個異步構建器...)。