2016-11-20 29 views
0

私は現在JavaでAndroid用のアプリケーションを持っていますが、これはiOSサポートのためにXamarin.Formsで書き直しています。 AndroidアプリではJsoupを使用し、XamarinアプリではAngleSharpを使用しています。AnglesharpとXamarin.Forms OpenAsyncはDroidプロジェクトでは動作しません

以下のコードは、iOSとUWPでは動作しますが、Droidプロジェクトでは動作しないという問題があります。

私の疑問は、context.OpenAsync(url)を呼び出すときに接続が確立されていないことです。

私はAndroidのマニフェストで

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

を持っています。私は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。プライバシーのために、私はURLまたはユーザー名とパスワードを表示していません。 ご協力いただければ幸いです!

+0

例外/スタックトレース? – SushiHangover

+0

なし。username.ValueがERRORを返す以外は、System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。要素が定義されていないため正しいです。 – genie137

答えて

0

これはAngleSharpでは問題ありませんが、下のMonoスタックでは問題ありません。アプリに必要な権限が与えられていることを確認してください。また、潜在的な証明書(HTTPS経由でページにアクセスする場合)が受け入れられることを確認してください。 Androidは許可モデルに合わないリクエストを拒否します(たとえば、アプリには権限がない、インストールされていない自己署名入りの証明書など...)。

希望すると便利です。 (残念ながら、質問の正確な問題は決して見つかりませんでした/通信 - corresponding GitHub issue参照)。

関連する問題