【问题标题】:Cleartext HTTP traffic to xxxx not permitted at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethodJava.Interop.JniEnvironment+InstanceMethods.CallVoidMethod 不允许到 xxxx 的明文 HTTP 流量
【发布时间】:2021-11-16 15:26:31
【问题描述】:

我只是 xamarian 移动应用程序开发的新手。我有简单的任务要做,只是登录功能,但我无法实现目标。我把这些东西放在 MainPage.xml 中

 public async void BtnLogin_Clicked(object sender, EventArgs e)
        {
            //var vm = new LoginViewModel();
            //this.BindingContext = vm;

            
            string email = string.Empty, password = string.Empty;

            email = Email.Text;
            password = Password.Text;

            if (!string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(password))
            {
                try
                {
                   
                    string WebAPIUrl = "http://smartentry.visitmydemo.xyz:81/App/SignIn?Email=" + email + "&Password=" + password;

                    //string WebAPIUrl = "http://smartentry.visitmydemo.xyz/App/SignIn";

                    //object input = new
                    //{
                    //    Email = email,
                    //    Password = password
                    //};

                    //string inputJson = JsonConvert.SerializeObject(input);

                    using (HttpClient client = new HttpClient())
                    {
                        
                        Uri uri = new Uri(WebAPIUrl);
                        client.Timeout = TimeSpan.FromMinutes(30);

                        string json = await client.GetStringAsync(uri);
                        
                        EntryClass MyEntry = JsonConvert.DeserializeObject<EntryClass>(json);

                        if (Convert.ToInt32(MyEntry.UserAccountId) > 0 && Convert.ToInt32(MyEntry.UserRoleId) > 0 && (Convert.ToBoolean(MyEntry.IsActive) == true) && Convert.ToInt32(MyEntry.ClientId) > 0)
                        {
                            //nevigate to dashboard page
                            await App.Current.MainPage.DisplayAlert("Error", "Login Success!!", "OK");

                        }
                        else if (Convert.ToInt32(MyEntry.UserAccountId) == 0 && Convert.ToInt32(MyEntry.UserRoleId) == 0 && (Convert.ToBoolean(MyEntry.IsActive) == false) && Convert.ToInt32(MyEntry.ClientId) == 0)
                        {
                            //if login fails
                            await App.Current.MainPage.DisplayAlert("Error", "Invalid Login, try again!!", "OK");
                        }
                    }
                }
                catch (Exception ex)
                {
                  await  App.Current.MainPage.DisplayAlert("Error", "Error :" + ex.Message.ToString(), "OK");

                }
            }
            else
            {
               await App.Current.MainPage.DisplayAlert("Error", "All fields are required", "OK");
            }
        }

还有另一个实现访问流量的工具我只是做这些事情

  1. [assembly: Application(UsesCleartextTraffic = true)] 添加到 AssemblyInfo.cs
  2. 创建一个文件 res/xml/net_sec_conf.xml 如下:
<network-security-config>
  <base-config cleartextTrafficPermitted="false">
      <trust-anchors>
          <certificates src="system" />
      </trust-anchors>
  </base-config>
  <domain-config cleartextTrafficPermitted="true">
      <domain includeSubdomains="true">http://smartentry.visitmydemo.xyz:81/</domain>
      <trust-anchors>
          <certificates src="system" />
      </trust-anchors>
  </domain-config>
</network-security-config>
  1. 最后将其添加到 AndroidManifest.xml 部分中,如下所示:

请帮助我摆脱困境...

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    在AndroidManifest文件中,应用内标签使用

    android:usesCleartextTraffic="true"
    

    【讨论】:

    • 还是那个错误
    • 现在变种Java.Net.SocketTimeoutException: failed to connect to smartentry.visitmydemo.xyz/106.201.234.2 (port 81) from /192.168.0.26 (port 56842) after 86400000ms: isConnected failed: ETIMEDOUT
    • 当前错误为超时。当服务器在给定时间内没有响应时会发生这种情况。这可能是因为互联网较弱。您可以以秒为单位增加超时时间。
    猜你喜欢
    • 1970-01-01
    • 2019-07-16
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2020-04-28
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多