43 votes

HttpResponse à Chaîne android

Je suis en train de convertir l'adresse http de la réponse à la chaîne à l'aide du code ci-dessous, mais ma réponse chaîne se termine dans le milieu de toutes les idées, comment convertir de la réponse http à la chaîne, de sorte que je n'obtiens aucun problème de mémoire tampon.

private static String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();
    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append((line + "\n"));
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close(); 
        } catch (IOException e) {
            e.printStackTrace(); 
        }
    }
    return sb.toString();
}

Toute personne, toute suggestion s'il vous plaît aider. Merci Deepesh

112voto

Simon Points 741

je pense, il y a un moyen plus simple:

String result = EntityUtils.toString(resp_entity);

droit?

24voto

ayublin Points 1248

Obtenez la réponse InputStream comme ceci:

httpResponse = client.execute(request);
HttpEntity entity = httpResponse.getEntity();
InputStream is = entity.getContent();

Essayez cette méthode:

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append((line + "\n"));
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

13voto

Laurent Russier Points 315
HttpResponse response = http.execute(httpMethod);
int responseCode = response.getStatusLine().getStatusCode();
switch(responseCode) {
case 200:
HttpEntity entity = response.getEntity();
    if(entity != null) {
        String responseBody = EntityUtils.toString(entity);
    }
    break;
}

Voir http://cdrussell.blogspot.com.es/2011/12/android-get-body-of-http-response-as.html

6voto

Dharmendra Points 14394
HttpPost httppost;
        DefaultHttpClient httpclient;
        ResponseHandler <String> res=new BasicResponseHandler();  
        List<NameValuePair> nameValuePairs;
        String bytesSent;

        httppost = new HttpPost(URL OF YOUR SITE);  
        HttpParams params = new BasicHttpParams();  

        HttpProtocolParams.setContentCharset(params, "UTF-8");

        httpclient = new DefaultHttpClient(params);
        nameValuePairs = new ArrayList<NameValuePair>(2);  
        nameValuePairs.add(new BasicNameValuePair("key1", value1));
        nameValuePairs.add(new BasicNameValuePair("key2", value2));
        nameValuePairs.add(new BasicNameValuePair("key3", value3));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
        bytesSent = httpclient.execute(httppost, res);

C'est le code de HTTPPOST en utilisant cela, vous pouvez obtenir une réaction en Chaîne.

Si vous devez passer de la chaîne de requête au serveur, alors vous pouvez utiliser nameValuePairs

3voto

Eric Lange Points 161

Si vous êtes à la recherche pour une meilleure façon de le faire qui gère l'encodage et le format des réponses, essayez ceci:

String encoding = EntityUtils.getContentCharSet(response.getEntity());
encoding = encoding == null ? "UTF-8" : encoding;
InputStream stream = AndroidHttpClient.getUngzippedContent(response.getEntity());
InputStreamEntity unzEntity = new InputStreamEntity(stream,-1);
String response = EntityUtils.toString(unzEntity, encoding);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X