2010-11-18 6 views
1

J'essaye d'analyser du HTML en utilisant jsoup (1.3.3) dans mon activité d'androïde. Quand j'appelle ce codeInternet Access ne fonctionne pas dans Android 1.6, mais fonctionne dans 2.0/2.1/2.2

Jsoup.connect("http://www.google.com").get(); 

Il fonctionne très bien dans Android 2.1 et 2.2 mais 1.6 je reçois un "java.io.IOException: 403 URL de chargement d'erreur". J'utilise l'émulateur pour tester cela et j'ai remarqué que les annonces admob ne sont pas montrées en 1.6 mais elles fonctionnent en 2.0, 2.1 et 2.2. L'utilisation du navigateur Web dans l'émulateur 1.6 fonctionne, donc je suis assez confiant que le problème est dans mon code quelque part.

Existe-t-il une permission supplémentaire dont j'ai besoin pour accéder à Internet dans la version 1.6 dont vous n'avez pas besoin dans la version 2.0+?

Voici comment mon fichier manifeste est structuré, la position de la balise uses-permission a-t-elle un effet?

<?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> 

J'ai essayé de créer un nouveau projet à partir de zéro avec juste un écran Bonjour tout le monde qui utilise la méthode Jsoup.connect() et qui fonctionne très bien sur le même émulateur 1.6, il doit donc être un problème de code, mais Je ne peux pas comprendre.

+1

Quelles sont les autorisations dans votre AndroidManifest.xml? Avez-vous essayé d'utiliser directement HttpClient pour frapper l'URL (en faisant sortir Jsoup de la boucle)? – sehugg

+0

Le code 'Document doc = Jsoup.connect (" http://www.google.com ") .get(); Log.i ("jsoup", doc.title()); 'fonctionne pour moi sur l'émulateur 1.6 avec' 'et * jsoup-1.3.3 .jar * –

+1

Avez-vous vérifié avec une autre application telle que le navigateur par défaut que la mise en réseau fonctionne dans cette instance d'émulateur? Peut-être vouloir faire un nouvel émulateur juste pour être sûr. –

Répondre

1

JSOUP utilise en interne HttpURLConnection. Voici le line throwing exception.

La connexion Internet est OK (ou bien elle jetterait exception plus tôt) et que vous obtenez une réponse du serveur qui est: 403 HTTP FORBIDDEN

Y at-il une sorte de connexion en place? Vérifiez que vous pouvez ouvrir la même URL dans le navigateur sur le même périphérique/émulateur.

+0

Je cherche à mettre à jour jsoup.connect afin que l'on puisse le définir pour ne pas lancer une exception sur les réponses non-200, et obtenir un code de réponse du serveur hors de l'objet de réponse.Cela devrait rendre ce cas plus clair pour l'utilisateur. –

0

Essayez d'insérer/utilise-sdk à la fin du script ou essayez de supprimer/utilise-autorisation avec chacun entouré de crochets

0

J'ai essayé de créer un nouveau projet à partir de zéro avec juste un monde bonjour écran qui utilise la méthode Jsoup.connect() et qui fonctionne correctement sur le même émulateur 1.6, donc cela doit être un problème de code mais je ne peux pas le comprendre.

Essayez de mettre une utilisation des tests de ce début de votre démarrage de l'application (ou si cela provoque un délai d'attente de l'ANR, ajoutez un bouton « test »)

Faites une copie de votre demande et commenter beaucoup de choses out

Quelque part entre votre test minimal qui fonctionne et votre application complète qui ne fonctionne pas, il y a une différence importante. Diviser récursivement la différence et la conquérir ...

Questions connexes