首页 > 解决方案 > 从 Xamarin Forms 连接到 RESTful 服务的本地调试实例时出现问题

问题描述

我在 VS 2015 项目中有一个基本的 RESTful 服务实现。我刚刚开始学习 Xamarin 表单(在 VS 2019 中),我正在尝试验证我是否可以使用 Android 模拟器中的服务。

当我在调试模式下运行服务时,我可以使用“ http://localhost:49826/api/values/2 ”并成功地从服务中获取数据。

但是,当我在我的 Xamarin 项目中使用相同的东西时:

_client = new HttpClient(); _client.GetAsync(" http://localhost:49826/api/values ");

我收到以下错误:

{System.Net.WebException:无法连接到 localhost/127.0.0.1:49826 ---> Java.Net.ConnectException:无法连接到 localhost/127.0.0.1:49826

以下信息我在这里找到: https ://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/connect-to-local-web-services ,我将调用更改为:

_client.GetAsync(" http://10.0.2.2:49826/api/values ");

{Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:<。路径 '',第 0 行,第 0 位置。

客户端调用与“ https://jsonplaceholder.typicode.com/posts ”一起工作正常,从浏览器调用时服务工作正常,但是当我尝试连接它们时缺少一些东西。有任何想法吗?

标签: c#restdebuggingxamarinxamarin.android

解决方案


我正在工作Xamarin with Visual Studio,我需要在我的开发机器上使用物理 Android 设备上的 REST-API 来学习教程。

所以我安装了一个免费的 Visual Studio 工具/插件,名为Conveyor by Keyoti

当您的 WebApp/Rest-ApiDebug在您的开发机器上的 Visual Studio 中处于开启模式时,Conveyor 为您提供了 3 种从另一台设备连接到您的应用程序的方法:

  • 本地 URL(一个localhostURL,与 Visual Studio 相同)
  • 远程 URL(从连接到本地网络的另一台设备访问您的应用程序的 URL)
  • Internet URL(通过 Internet 访问您的应用程序)

因此,我激活了该internet URL选项并通过我的数据计划从我的 Android 手机成功访问了我的 Rest-Api(如果您的设备在同一个本地网络上,请使用Remote URL),但您必须注册一个免费帐户才能使用该Internet URL选项将在几个月后免费保留(根据撰写此评论时的网站)。

要在 Visual Studio 中安装 Conveyor,请转到Tools >> Extensions and updates,然后Online选择左侧的选项,搜索并安装。您必须重新启动 Visual Studio 才能使安装生效。


推荐阅读