2010-09-06 3 views
0

J'ai un problème pour créer un POST HTTP dans Android.Problème avec HTTP Post dans Android

Le problème se produit lorsque le code lit la réponse, il ne peut pas obtenir le code de page Web complet que je veux récupérer.

Je récupère seulement une partie de la bande.

Voici le code:

try { 

     HttpClient httpclient = new DefaultHttpClient(); 

     HttpPost httppost = new HttpPost(URL); 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("text", "06092010")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response; 
     response=httpclient.execute(httppost); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 


     String s = ""; 
     String line = reader.readLine(); 

     while(line != null){ 
      s += line+"\n"; 
      line = reader.readLine(); 
     } 


     Log.d("Street", "Result: "+s);   


    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block   
     Log.d("Street", e.toString()); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block   
     Log.d("Street", e.toString()); 
    } catch (Exception e) { 
     Log.d("Street", e.toString()); 
    } 

Répondre

0

Utilisation de votre code, je reçois le même résultat, mais maintenant je sais que le problème.

Le problème n'est pas le code, est le LogCat Android (un enregistreur) où j'imprime la chaîne résultante. Dans ce journal, si la chaîne est trop longue, elle ne montre qu'une petite partie du résultat.

Le problème était la façon que l'enregistreur d'Android montre les chaînes de

désire ardemment

Merci Gaz pour l'aide!

+0

Veuillez marquer ceci comme étant alors répondu, utilisez ce message comme réponse. Aidez StackOverflow à rester propre! –

0

Alors reader.readLine est de retour nul avant d'avoir atteint la fin du cours d'eau? Est-ce que le tampon contient une nouvelle ligne à la fin? The docs suggère que la fin du flux ne constitue pas une "fin de ligne":

Lire une ligne de texte. Une ligne est considérée comme terminée par une ligne d'un saut de ligne ('\ n'), un retour chariot ('\ r') ou un retour chariot suivi immédiatement d'un saut de ligne.

J'utilise cette approche moi-même, cela fonctionne, mais pas une solution très efficace:

public static String URLToString(URL url) throws IOException { 
    InputStream in = (InputStream) url.getContent(); 
    int ch; 

    StringBuffer b = new StringBuffer(); 
    while((ch = in.read()) != -1){ 
     b.append((char)ch); 
    } 

    return b.toString(); 
}