我目前在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。由于隐私,我没有显示网址或用户名和密码。 任何帮助表示赞赏!
答案 0 :(得分:0)
这不是AngleSharp的问题,而是下面的Mono堆栈。确保您已为应用程序提供必要的权限。还要确保接受潜在证书(如果通过HTTPS访问页面)。 Android将拒绝不符合权限模型的请求(例如,应用程序没有权限,未安装的自签名证书,...)。
希望这有帮助! (遗憾的是,问题的确切问题从未被发现/传达 - 请参阅corresponding GitHub issue)。