Xamarin. Android не может получить таблицу из базы данных Azure в Android 10 Q - PullRequest
1 голос
/ 08 октября 2019

Я читал, что из-за отсутствия поддержки Netcore 2.1

myItemsList = await App.MobileServiceAndroid.GetTable<MyTable>().ToListAsync();

в настоящее время не работает на Android, и существует обходной путь для передачи HttpClientHandler () в конструкторе MobileServiceClient, ипоэтому я сделал вот так:

public static MobileServiceClient MobileServiceAndroid =
            new MobileServiceClient(AppConstants.AZURE_PRODUCTION_WEB_API_URL, new HttpClientHandler());

Но это неполно, он все еще не работает, что именно я должен сделать, чтобы сделать эту работу, любое руководство очень ценится.

1 Ответ

1 голос
/ 09 октября 2019

Насколько я понимаю, вы используете проект Forms / PCL, тогда как другое решение внедрило этот код в свой проект Android. Для вас, как только вы добавите using Xamarin.Android.Net; в класс, вы сможете просто сделать это:

public static MobileServiceClient MobileServiceAndroid =
            new MobileServiceClient(AppConstants.AZURE_PRODUCTION_WEB_API_URL, new AndroidClientHandler());

Скорее всего, у вас могут возникнуть проблемы с получением этого утверждения с помощью, потому что у вас будетвыполните шаги, показанные здесь или настроенные для вас, в следующих шагах:

  1. Добавьте проект Xamarin Forms ко всем вашим проектам.
  2. Создайте интерфейс ICustomClientHandler в основном проекте
using System;
using System.Net.Http;

namespace Test
{
    public interface ICustomClientHandler
    {
        HttpClientHandler GetHandler();
    }
}
Затем создайте CustomClientHandler в проекте Droid, который станет частью Android службы зависимостей, которая поможет вам получить нативный AndroidClientHandler
using System.Net.Http;
using Xamarin.Android.Net;
using System.Runtime.CompilerServices;
using Xamarin.Forms;
using Test;
[assembly: Xamarin.Forms.Dependency(typeof(Test.Droid.CustomClientHandler))]
namespace Test.Droid
{
    public class CustomClientHandler : ICustomClientHandler
    {
        public HttpClientHandler GetHandler()
        {
            return new AndroidClientHandler();
        }
    }
}
Реализуйте также версию для iOS аналогичным образом, но вместо этого она будет return new HttpClientHandler(); Наконец, используйте код, показанный в вашем проекте Core:
var clientHandler = DependencyService.Get<ICustomClientHandler>().GetHandler();
public static MobileServiceClient MobileServiceAndroid =
            new MobileServiceClient(AppConstants.AZURE_PRODUCTION_WEB_API_URL, clientHandler);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...