2016-11-20 2 views
0

В настоящее время у меня есть приложение для Android на Java, которое я переписываю в Xamarin.Forms для поддержки iOS. В Android-приложении я использовал Jsoup, а в приложении Xamarin я использую AngleSharp.Anglesarp и Xamarin.Forms OpenAsync не работает in.Droid project

У меня проблема с тем, что приведенный ниже код работает на iOS и UWP, но не в проекте Droid.

Мое подозрение заключается в том, что при вызове контекста не происходит никакого соединения. OpenAsync (url);

У меня есть

<uses-permission android:name="android.permission.INTERNET" /> 

в моем Android Manifest. Я нацелен на minSdk = 17, targetSdk = 24. Проблема сохраняется как в эмуляторе, так и на моей Галактике S7.

Код:

try 
     { 
       var url = "<URL>"; 
       var configuration = Configuration.Default.WithDefaultLoader().WithCookies(); 
       var context = BrowsingContext.New(configuration); 
       var document = await context.OpenAsync(url); 
       IHtmlInputElement username = document.QuerySelector("input[id='username']") as IHtmlInputElement; 
       IHtmlInputElement password = document.QuerySelector("input[id='password']") as IHtmlInputElement; 
       IHtmlFormElement loginform = document.QuerySelector("form[id='logonForm']") as IHtmlFormElement; 

       username.Value = "<uname>"; 
       password.Value = "<pword>"; 
       document = await loginform.SubmitAsync(); 

       Debug.WriteLine(context.Active.Url); 
      } 
      catch (Exception e) 
      { 
       Debug.WriteLine("ERROR " + e); 
      } 

Nb. Из-за конфиденциальности я не показываю URL-адрес, имя пользователя и пароль. Любая помощь приветствуется!

+0

Исключение/трассировка стека? – SushiHangover

+0

Отсутствует, за исключением того факта, что имя пользователя.Value дает ERROR System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта. Это правильно, потому что нет определенных элементов. – genie137

ответ

0

Это не проблема с AngleSharp, а скорее со стеком Mono ниже. Убедитесь, что вы предоставили приложению необходимые разрешения. Также убедитесь, что потенциальные сертификаты (если страница обращается через HTTPS) принимаются. Android отклонит запросы, которые не соответствуют модели разрешений (например, приложение не имеет разрешения, самозаверяющие сертификаты, которые не установлены, ...).

Надеюсь, это поможет! (к сожалению, точная проблема для вопроса никогда не была найдена/сообщена - см. corresponding GitHub issue).

Смежные вопросы