c# - 从 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 ”一起工作正常,从浏览器调用时服务工作正常,但是当我尝试连接它们时缺少一些东西。有任何想法吗?
解决方案
我正在工作Xamarin with Visual Studio
,我需要在我的开发机器上使用物理 Android 设备上的 REST-API 来学习教程。
所以我安装了一个免费的 Visual Studio 工具/插件,名为Conveyor by Keyoti。
当您的 WebApp/Rest-ApiDebug
在您的开发机器上的 Visual Studio 中处于开启模式时,Conveyor 为您提供了 3 种从另一台设备连接到您的应用程序的方法:
- 本地 URL(一个
localhost
URL,与 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 才能使安装生效。
推荐阅读
- java - 从 Eclipse 导出后 System.out.println 不打印
- mysql - 如何检查表中是否存在数组的所有元素?
- angular - Angular 测试:TestBed 不需要提供 ApplicationRef
- python - slice(-4, 4, 0.25) 的确切含义是什么?
- java - Proguard 配置问题
- python - Heroku 部署的 django 站点出现应用程序错误
- ruby-on-rails - Rails 序列化器协会
- mysql - MySQL 将日期格式从“2018 年 7 月 5 日星期四”更改为“2018-07-05”
- bash - Mono WinFroms 应用程序不会在启动时运行
- ruby-on-rails - 在 Heroku 上使用 Action Mailer 安排电子邮件