2010-02-09 21 views
0

je télécharger un morceau multipart de données à l'aide HttpPost et l'alimentation dans un objets HttpClient méthode d'exécution comme suit:des vitesses de téléchargement lentes à l'aide HttpClient, méthode Mime4j de Jame et HttpPost d'affichage

HttpPost loginPost = new HttpPost(LOGIN_URL); 
List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("_email", mEmailAddress)); 
params.add(new BasicNameValuePair("lpassword", mPassword)); 

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8"); 

loginPost.setEntity(entity); 
HttpResponse resp = mHttpClient.execute(loginPost); 

HttpPost post = new HttpPost(UPLOAD_URL); 
FileBody bin = new FileBody(file); 
MultipartEntity me = new MultipartEntity(); 

me.addPart("stuff", new StringBody(stuff)); 
me.addPart("file", bin); 

post.setEntity(new RequestEntityEx(me, handler)); 
mHttpClient.execute(post); 

Maintenant, vous connecter et poster du travail - bien mais le téléchargement est douloureusement lent. J'ai testé ma connexion Internet et il est beaucoup plus lent que ce qu'il devrait être (environ 1Mb/s, le téléchargement d'un fichier de 3Mo prend environ 5 minutes (plutôt que 30s)

Quelqu'un a des idées?

Répondre

0

J'ai trouvé que HttpClient est comme 9 fois plus lent que de façon régulière sur https. Je ne sais pas pourquoi, tout le monde sait ce qui ne va pas.

Voici essentiellement mon code

private static HttpClient httpClient = new DefaultHttpClient(); 
private static HttpPost httpPost = new HttpPost(RRD_URL); 

    public static String sendData(List<NameValuePair> data) { 
    StringBuffer buffer = new StringBuffer(); 
    BufferedReader rd = null; 
    try { 
     httpPost.setEntity(new UrlEncodedFormEntity(data)); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 

     rd = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); 
     String line; 
     while ((line = rd.readLine()) != null) { 
      buffer.append(line); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(System.out); 
    } finally { 
     try { 
      if (rd != null) { 
       rd.close(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(System.out); 
     } 
    } 

    return buffer.toString(); 
} 
+0

Cela devrait être Posté comme une question distincte, pas comme une réponse Voir le bouton ** [Poser la question] ** En haut à droite de la page –