Anglesharp和Xamarin.Forms OpenAsync在.Droid项目中不起作用

时间:2016-11-20 15:39:49

标签: android xamarin web-scraping anglesharp

我目前在Java中有一个Android应用程序,我在Xamarin.Forms中重写了iOS支持。在Android应用程序中我使用了Jsoup,而在Xamarin应用程序中我使用的是AngleSharp。

我遇到的问题是下面的代码适用于iOS和UWP,但不适用于Droid项目。

我怀疑在调用context时没有建立连接.OpenAsync(url);

我有

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

在我的Android Manifest中。我的目标是minSdk = 17,targetSdk = 24。 问题在模拟器和我的Galaxy 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。由于隐私,我没有显示网址或用户名和密码。 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

这不是AngleSharp的问题,而是下面的Mono堆栈。确保您已为应用程序提供必要的权限。还要确保接受潜在证书(如果通过HTTPS访问页面)。 Android将拒绝不符合权限模型的请求(例如,应用程序没有权限,未安装的自签名证书,...)。

希望这有帮助! (遗憾的是,问题的确切问题从未被发现/传达 - 请参阅corresponding GitHub issue)。