HttpResponse utilisant android question: exécuter provoque toujours une exception?

J'ai travaillé sur un projet Android et j'en suis à un point où je veux poser quelques API pour plus d'informations. Semble que ce doit être très basique!!

Voici l'essentiel de mon code:

private InputStream retrieveStream2(String url)
{
    DefaultHttpClient client = new DefaultHttpClient();

    HttpGet getRequest = new HttpGet(url);
    System.out.println("getRequest == " + getRequest);
    try {


        HttpResponse getResponse = client.execute(getRequest);//here is teh problem
        final int statusCode = getResponse.getStatusLine().getStatusCode();


        if (statusCode != HttpStatus.SC_OK)
        {
            Log.w(getClass().getSimpleName(),
                    "Error " + statusCode + " for URL " + url);
            return null;
        }

        HttpEntity getResponseEntity = getResponse.getEntity();
        return getResponseEntity.getContent();

    }
    catch (Exception e)
    {
        getRequest.abort();
        Log.w(getClass().getSimpleName(), "Error for URL, YO " + url, e);
    }
    return null;
}

où la variable d'url est la chaîne de caractères "http://search.twitter.com/search.json?q=javacodegeeks".

Comme vous pouvez le voir il y a une belle JSON info sur ce site; Mon problème est que à chaque fois "du client.execute(getRequest);" est appelé, le programme lève et attrape une exception. Pas utile!

J'ai entendu parler de deux choses:

1) Vous devez définir des autorisations pour l'émulateur/appareil pour utiliser l'internet!
-- Je pense que j'ai couvert ce, mais peut-être que j'ai tort!
Dans le androidmanifest.xml j'ai ajouté

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

Donc il n'y a qu'.

2) (qui, je n'en suis pas certain) vous ne pouvez pas démarrer un "networking" fil à l'intérieur d'un 'ui' thread. Je ne suis pas entièrement sûr de ce que cela signifie, mais je suis allé de l'avant et de suivre un tutoriel sur Android Threads, les Gestionnaires et AsyncTasks. Ici: Veuillez vérifier le code en vertu de l'AsyncTask tutoriel, que j'ai suivi:

http://www.vogella.de/articles/AndroidPerformance/article.html

Après suivant les AsyncTask tutoriel, j'ai trouvé que j'avais toujours le même problème--

la ligne:
HttpGet httpGet = new HttpGet(url)
toujours jeté une exception, comme avant.

Voici le logcat de ma tentative avec le filetage tutoriel ci-dessus:

02-27 20:43:28.565: I/ActivityManager(92): START {cmp=com.Prometheus.R1/.JsonParsingActivity} from pid 574
02-27 20:43:28.565: W/WindowManager(92): Failure taking screenshot for (180x300) to layer 21010
02-27 20:43:28.896: I/System.out(574): pre execute
02-27 20:43:29.236: I/ActivityManager(92): Displayed com.Prometheus.R1/.JsonParsingActivity: +638ms
02-27 20:43:29.329: I/ARMAssembler(35): generated scanline__00000077:03010104_00008001_00000000 [ 89 ipp] (110 ins) at [0x40fad6a8:0x40fad860] in 7204915 ns
02-27 20:43:30.016: W/System.err(574): java.net.UnknownHostException: Unable to resolve host "search.twitter.com": No address associated with hostname
02-27 20:43:30.016: W/System.err(574):  at java.net.InetAddress.lookupHostByName(InetAddress.java:426)
02-27 20:43:30.026: W/System.err(574):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
02-27 20:43:30.026: W/System.err(574):  at java.net.InetAddress.getAllByName(InetAddress.java:220)
02-27 20:43:30.026: W/System.err(574):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
02-27 20:43:30.036: W/System.err(574):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-27 20:43:30.036: W/System.err(574):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-27 20:43:30.046: W/System.err(574):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-27 20:43:30.046: W/System.err(574):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-27 20:43:30.046: W/System.err(574):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-27 20:43:30.055: W/System.err(574):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-27 20:43:30.055: W/System.err(574):  at com.Prometheus.R1.JsonParsingActivity$DownloadWebPageTask.doInBackground(JsonParsingActivity.java:88)
02-27 20:43:30.055: W/System.err(574):  at com.Prometheus.R1.JsonParsingActivity$DownloadWebPageTask.doInBackground(JsonParsingActivity.java:1)
02-27 20:43:30.055: W/System.err(574):  at android.os.AsyncTask$2.call(AsyncTask.java:264)<br/>
02-27 20:43:30.066: W/System.err(574):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-27 20:43:30.066: W/System.err(574):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)<br/>
02-27 20:43:30.066: W/System.err(574):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
02-27 20:43:30.076: W/System.err(574):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-27 20:43:30.076: W/System.err(574):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-27 20:43:30.087: W/System.err(574):  at java.lang.Thread.run(Thread.java:856)
02-27 20:43:30.108: W/System.err(574): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
02-27 20:43:30.116: W/System.err(574):  at libcore.io.Posix.getaddrinfo(Native Method)
02-27 20:43:30.116: W/System.err(574):  at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
02-27 20:43:30.126: W/System.err(574):  at java.net.InetAddress.lookupHostByName(InetAddress.java:411)
02-27 20:43:30.126: W/System.err(574):  ... 18 more
02-27 20:43:30.136: I/System.out(574): Except thrown by url http://search.twitter.com/search.json?q=javacodegeeks, .... 
02-27 20:43:30.136: I/System.out(574): response =


L'exception est un UnknownHostException comme vous pouvez le voir:

"ava.net.UnknownHostException: Impossible de résoudre l'hôte "search.twitter.com": Aucune adresse associée avec le nom d'hôte"


Mais je ne pense pas que le site est inacceptable...

Quelqu'un peut me dire ce qu'il se passe sur + ce que je dois faire pour obtenir à travers elle?

ce sont l'exception et la trace de la pile?
J'ai ajouté le logcat à l'original question, que c'est long.
Ajouter les autorisations résolu pour moi. Mais, assurez-vous de changer cette ligne: < uses-permission android:name="android.permission.INTERNET" >< /uses-permission> à <uses-permission android:name="android.permission.INTERNET" ></uses-permission>

OriginalL'auteur Ethan Sherr | 2012-02-28