2011-11-09 2 views
3

Salut J'utilise le code suivant pour établir une connexion URL. Mais au hasard je reçois le responseCode -1 (qui est la valeur par défaut de responseCode):HttpURLConnection responsecode est aléatoire -1

try { 
     URL url = new URL(urlString); 

     HttpURLConnection httpconn = (HttpURLConnection) url.openConnection(); 

     if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      handleData(new DataInputStream(httpconn.getInputStream()), requestCode); 
     } else { 
      Log.e(TAG, "HttpConnection not OK: " + httpconn.getResponseCode()); 
      ActivityHelper.httpError(this); 
     } 
     httpconn.disconnect(); 
    } catch (Exception e) { 
     Log.e(TAG, "handleHttpConnection", e); 
     ActivityHelper.httpError(this); 
    } 

que je fais quelque chose de mal? Parce que cela fonctionne parfaitement dans 9 tentatives sur 10.

+2

Je suppose que 'url.openConnection()' n'a pas nécessairement le temps d'ouvrir la connexion http sous-jacente. Vous pouvez essayer d'ajouter 'httpconn.connect()' après l'avoir ouvert. Ou le code de réponse doit être défini au plus tard une fois que vous avez appelé 'httpconn.getInputStream()' qui peut être déplacé avant de vérifier le code de réponse. – harism

Répondre

3

UrlConnection est buggé.

Voir le blog this blog du blog officiel du développeur Android pour une solution de contournement avant Gingerbread pour un problème.

Mon conseil, ne l'utilisez pas. Il était encore flaky pour moi sur 3.2. Je suis passé à HttpClient et les choses ont été moins mauvaises.

+0

Quelqu'un a-t-il une mise à jour à ce sujet, ou une confirmation sur le flakiness pour les plateformes 4.x? – Shellum

Questions connexes