我似乎无法从我的xamarin Forms移动应用程序中访问Web api。我可以通过PostMan命中api,并且效果很好。
输入文本时运行的命令
return _searchCommand ?? (_searchCommand = new Command<string>(async (text) => await ExecutSearchCommand(text)));
此命令调用我的ExecuteSearchCommand
方法,客户端通过该方法进行api调用
async Task ExecuteSearchCommand(string search){
var table = await App.Client.InvokeApiAsync("api/Item", System.Net.Http.HttpMethod.Get, new Dictionary<string, string> (){ { "filter", search } });
...
}
我的ItemController看起来像这样
[MobileAppController]
[Route("api/Item")]
public class ItemController : ApiController
{
[HttpGet]
public async Task<IEnumerable<Item>> Get(string filter)
{
return await itemRepository.SearchAsync(filter);
}
}
我这里缺少什么吗?我尝试在本地运行时点击网络api,并将客户端指向localhost以及托管的网络api。
*我确实为android项目设置了互联网权限
答案 0 :(得分:0)
问题出在这行
var table = await App.Client.InvokeApiAsync("api/Item", System.Net.Http.HttpMethod.Get, new Dictionary<string, string> (){ { "filter", search } });
显然,使用InvokeApiAsync方法时,它已经添加了'api'前缀。删除此问题已解决。