我正在为Android和iOS构建一个Xamarin.Forms应用程序,它应该使用API。 API有点内置于REST精神,我在本地IIS Express服务器上托管API,我的Android模拟器没有问题找到它(在各种端点上测试,我也可以显示api-doc)。
我正在尝试与http://IPOfMyComputer/api/Stuffs
端点联系,该端点为我提供了一个JSON的Stuff列表。使用Postman我成功地获得了我需要的所有东西,在这种情况下是一个有效的身份验证令牌,以构建正确的HTTP GET请求。我正在使用Microsoft.Net.Http NuGet包来构建此请求,因为它似乎是完成这项工作的正确工具。我正在Xamarin.Forms“Main”项目中执行此请求构建过程(不是iOS或Android项目,另一个我不知道如何命名,由Visual Studio自动命名)。
我的代码如下所示:
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)
我找到了该错误的来源:
事实证明它并没有直接与GetAsync
方法相关联,但在与async / await使用相关的代码中有些混乱。
到处都有一堆蹩脚的代码。我放弃了它以回到常规的MVVM逻辑,并将async / await逻辑放入由事件处理程序调用的方法中(而不是尝试"创建"类的异步构建器......)。 / p>