2010-11-18 18 views
1

私はアンドロイドの活動でjsoup(1.3.3)を使っていくつかのhtmlを解析しようとしています。私がこのコードを呼び出すときAndroid 1.6ではインターネットアクセスが動作しませんが、2.0/2.1/2.2で動作します

それはアンドロイド2.1と2.2ではうまくいますが、1.6では "java.io.IOException:403 Error loading URL"が表示されます。

これをテストするためにエミュレータを使用していますが、私はadmob広告も1.6では表示されていませんが、2.0,2.1,2.2では動作することに気付きました。

1.6エミュレータでウェブブラウザを使用すると問題が起きるので、私のコードのどこかに問題があると確信しています。

2.0で必要としない1.6のインターネットアクセスに必要ないくつかの追加の権限がありますか?

これは私のマニフェストファイルがどのように構造化されているか、uses-permissionタグの位置は影響を受けますか?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.foo.bar" 
    android:versionCode="1" 
    android:versionName="1.0" 
    android:installLocation="auto"> 

<application android:icon="@drawable/icon" 
android:label="@string/app_name" 
android:theme="@android:style/Theme.NoTitleBar" 
android:name="blahblah" 
android:description="@string/app_desc"> 

    <activity android:label="@string/app_name" android:name=".activities.MainMenu"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

<activity android:name=".activities.FullList" android:label="@string/app_name"/> 

<!-- The application's publisher ID assigned by AdMob --> 
<meta-data android:value="blahblahblah" android:name="ADMOB_PUBLISHER_ID" /> 

</application> 
<uses-sdk android:minSdkVersion="4"/> 

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

</manifest> 

私はJsoup.connect()メソッドを使用しており、それは同じ1.6エミュレータ上で正常に動作だけでハローワールド画面でゼロから新しいプロジェクトを作成しようとしましたので、コードの問題でなければなりませんが、私はそれを理解することはできません。

+1

AndroidManifest.xmlにはどのような権限がありますか?また、まっすぐHttpClientを使ってURLをヒットしようとしましたか(Jsoupをループから外す)? – sehugg

+0

コード 'Document doc = Jsoup.connect(" http://www.google.com ").get(); Log.i( "jsoup"、doc.title()); 'は' 'と* jsoup-1.3.3を使って1.6エミュレータで動作します.jar * –

+1

そのエミュレータインスタンスでネットワークが動作するという既定のブラウザなどの別のアプリケーションで確認しましたか?確かに新しいエミュレータを作りたいかもしれません。 –

答えて

1

JSOUPは内部でHttpURLConnectionを使います。ここにはline throwing exceptionがあります。

インターネット接続がOKである(またはそうでなければ、以前の例外をスローします)と、あなたがあるサーバからの応答になっています403 HTTP FORBIDDEN

が代わりにログインのいくつかの種類がありますか?ブラウザの同じデバイス/エミュレータで同じURLを開くことができることを確認してください。

+0

jsoup.connectを更新して、200以外のレスポンスで例外をスローしないように設定し、レスポンスオブジェクトからサーバーレスポンスコードを取得するようにしたいと考えています。これは、このケースをユーザーに明確にするはずです。 –

0

てみ挿入は/スクリプトの終わり近くに、SDKを使用するか、または削除してみてください/使用許可を各私はハロー世界で最初から新しいプロジェクトを作成しようとしました

0

角括弧で囲まれてJsoup.connect()メソッドを使用し、同じ1.6エミュレータで正常に動作するので、コードの問題でなければなりませんが、わかりません。

アプリケーションのコピーを作成し、多くのことをコメントし、アプリケーションの起動時にこの初期のテスト使用を入れてみてください(またはそれがANRのタイムアウトが発生した場合、「テスト」ボタンを追加します)

アウト

あなたの最小限のテストと完全なアプリケーションとの間には、重要な違いがあります。その差を再帰的に分けて征服する...

関連する問題