微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin-无法通过Android和iOS访问本地api 在iOS中在Android中

如何解决Xamarin-无法通过Android和iOS访问本地api 在iOS中在Android中

我正在使用macos Rider开发适用于Android和iO的Xamarin应用。我有一个本地api,我正在尝试通过该应用使用,但看来该应用无法访问该api。这种情况在Android和iOS上都会发生。

在Android上,我尝试将api更改为http://10.0.2.2:5000。事实是,在使用模拟器浏览器时,我可以访问api端点,但是尝试通过该应用程序访问时,会在加载时卡住。

使用iPhone仿真器时,出现错误,我应该使用SSL才能通过仿真器访问api。

我尝试在Android上进行调试,以便确定api确实是这里的问题(我发现可以通过模拟器浏览器访问它很奇怪),但是我无法弄清楚,因为没有抛出异常。到达下面的代码时,它似乎只是在“停止”。

enter image description here

总而言之,一些事实:

  1. 该应用在iOS和Android上无法正常运行
  2. 该api正在运行,并且我尝试在Android上使用http://10.0.2.2:5000,在iPhone上使用http://localhost:5000。我可以通过模拟器浏览器和Postman访问该应用程序。这也给了我结果,因此与此相关的数据库或api似乎没有什么问题。
  3. 我正在使用Mac(Jetbrains Rider)
  4. 当我使用服务器上运行的相同api时,它有效工作

解决方法

如果要访问到任何站点的HTTP连接,则需要在特定平台上添加以下代码

在iOS中

将以下行添加到 info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

在Android中

将行android:usesCleartextTraffic="true"添加到 AndroidManifest ,如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"   android:versionCode="1" android:versionName="1.0" package="com.companyname.app32">
    <uses-sdk android:minSdkVersion="21"  android:targetSdkVersion="28"  />
    <application android:label="App32.Android" android:theme="@style/MainTheme" android:usesCleartextTraffic="true"></application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。