5 Réponses :


9
votes

Vous n'utilisez pas les paramètres httpparams code>, ils doivent être fournis au httpClient. Donc, ça ne fonctionnera pas comme ça. Dans l'anwer que vous avez lié, la commande est correcte! Essayez l'ordre suivant: Créez d'abord les paramètres et fournissez-les au httpClient.

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000);

HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet request = new HttpGet(url);

HttpResponse response = client.execute(request);


7 commentaires

Je viens de réaliser grâce à votre réponse que j'ai oublié d'insérer httpclient.setparams (httpparameters);, qui a été suggérée par Kuester2000. Cependant, cela ne fonctionne pas avec AndroidhttpClient. Est-il possible d'utiliser AndroidhttpClient au lieu de httpClient comme vous le faites?


Avez-vous vraiment besoin des caractéristiques de AndroidhttpClient? Sinon, vous pouvez simplement utiliser DefaulthttpClient.


En fait, je ne connais pas vraiment la différence ... cela signifie probablement "non", n'est-ce pas?


Oui, peut-être, voir cette réponse: Stackoverflow.com/questions/5135918/...


J'ai eu beaucoup de choses, mais "Paramètres de défaillance raisonnables" n'est pas vraiment utile pour moi. ^^ Cependant, il est dit dans la documentation à la méthode "NewInstance": "Créez un nouveau httpClient avec des valeurs par défaut raisonnables (que vous pouvez mettre à jour)." Mais je ne trouve pas un moyen de les mettre à jour.


Vous devez choisir: soit vous laissez Android choisissez les valeurs par défaut (y compris les timbres), soit définir les paramètres vous-même. Si vous avez vraiment besoin de délits configurables, prenez la défaulttpclient.


résolu en ajoutant une ligne simple, mais comme vous avez laissé tomber ce qui n'allait pas initialement, merci de toute façon!



6
votes

i a fait manquez à attacher les paramètres à ma demande HTTP, mais la manière appropriée de le faire dans mon exemple est xxx

avant d'appeler httpclient.execute ( httpget).

Il suffit d'ajouter cette ligne et ça fonctionnait bien.


0 commentaires


0
votes
            try {
                HttpGet httpGet = new HttpGet("your_uri/test.json");

                HttpParams httpParameters = new BasicHttpParams();
                // Set the timeout in milliseconds until a connection is established.
                // The default value is zero, that means the timeout is not used.
                int timeoutConnection = 5000;
                HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
                // Set the default socket timeout (SO_TIMEOUT)
                // in milliseconds which is the timeout for waiting for data.
                int timeoutSocket = 10000;
                HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

                HttpClient httpclient = new DefaultHttpClient();

                httpGet.setParams(httpParameters);

                HttpResponse response = httpclient.execute(httpGet);

                HttpEntity entity = response.getEntity();

                BufferedReader br = null;

                if(entity != null) {
                    Log.i("read", "nube");

                    br = new BufferedReader(new InputStreamReader(entity.getContent()));

                } else {
                    Log.i("read", "local");

                    AssetManager am = getApplicationContext().getAssets();
                    InputStream is = am.open("test.json");

                    br = new BufferedReader(new InputStreamReader(is));
                }

                String line;
                String texto = "";

                while ((line = br.readLine()) != null) {
                    texto += line;
                }


            } catch (IOException e) {
                e.printStackTrace();
            }

0 commentaires

0
votes

Après avoir lu, voici comment je l'ai fait à l'aide des paramètres droits à partir du client par défaut:

HttpClient client = new DefaultHttpClient();
HttpParams params = client.getParams();
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 3000);


0 commentaires