web-dev-qa-db-fra.com

org.Apache.http.conn.HttpHostConnectException: Connexion à http: // localhost refusée sous android

Je crée une application qui télécharge des images sur un serveur et met à jour sa base de données sur un serveur sous Android lors de son exécution

Connection to http://localhost refused 

et beaucoup d'autres erreurs, j'ai recherché ce problème et ai trouvé au lieu de fournir la connexion d'URL

http://localhost/... provide the link as http://10.0.2.2/... 

et je l’ai fait mais le problème est le même plus d’erreur est ici:

E/org.Apache.http.conn.HttpHostConnectException(4318): Connection to http://localhost refused
E/org.Apache.http.conn.HttpHostConnectException(4318): org.Apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:183)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.Java:164)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.Java:119)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:360)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:555)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:487)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at com.example.Android.photobyintent.ViewRecipients.uploadFile(ViewRecipients.Java:325)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at com.example.Android.photobyintent.ViewRecipients$1.run(ViewRecipients.Java:238)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.lang.Thread.run(Thread.Java:856)
E/org.Apache.http.conn.HttpHostConnectException(4318): Caused by: Java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.Java:114)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:192)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:459)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.net.Socket.connect(Socket.Java:842)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.Java:119)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:144)
E/org.Apache.http.conn.HttpHostConnectException(4318):  ... 8 more
E/org.Apache.http.conn.HttpHostConnectException(4318): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.Posix.connect(Native Method)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.Java:85)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connectErrno(IoBridge.Java:127)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.Java:112)
E/org.Apache.http.conn.HttpHostConnectException(4318):  ... 13 more

le code pour le téléchargement de fichier est:

public int uploadFile(ArrayList<String> sourceFileUri, String info, String latitude, String longitude, String id) throws IOException {
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add");

            MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("returnformat", new StringBody("json"));
            System.out.println(sourceFileUri.size());
            for(int i=0;i<sourceFileUri.size();i++){
                String sourceFile = sourceFileUri.get(i);
                entity.addPart("uploaded_file"+(i+1), new FileBody(new File(sourceFile)));
            }

            entity.addPart("fld_delivery_id", new StringBody(id));
            entity.addPart("fld_delivery_location", new StringBody(info));
            entity.addPart("fld_latitude", new StringBody(latitude));
            entity.addPart("fld_longitude", new StringBody(longitude));
            httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost, localContext);
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(
                            response.getEntity().getContent(), "UTF-8"));

            String sResponse = reader.readLine();
            return 1;
        } catch (Exception e) {
            if (dialog.isShowing())
                dialog.dismiss();

            Log.e(e.getClass().getName(), e.getMessage(), e);
            return 1;
        }

       }

lors du débogage, le code atteint jusqu'à:

httpPost.setEntity(entity);

et cela montre une exception après cette ligne, c'est-à-dire sur cette déclaration:

HttpResponse response = httpClient.execute(httpPost, localContext);

Quelqu'un pourrait-il m'aider à ce sujet?

28
ugene

si vous utilisez Emulator pour exécuter votre application sur un serveur local. mentionner la ipas10.0.2.2 locale et donner l'autorisation Internet à votre application

<uses-permission  Android:name="Android.permission.INTERNET" />
22

<uses-permission Android:name="Android.permission.INTERNET"/> Ajoutez cette balise ci-dessus dans le fichier AndroidManifest.xml de votre projet Android , et tout ira bien.

13
Jeffery Yuan
http://localhost

L'hôte ci-dessus est déjà occupé par l'émulateur dans lequel vous exécutez le code. Si vous souhaitez accéder à l'hôte local de votre ordinateur, utilisez l'adresse IP sous la forme http://10.0.2.2:8080/.

Pour plus de détails, référez-vous s'il vous plaît à ce link .

7
TNR

je faisais face exactement au même problème et j'ai apporté les modifications suivantes à mon URL, après quoi tout fonctionnait parfaitement bien ..

De:

http://localhost/Image4Android/get_all_images.php

À:

http://192.168.1.2/Image4Android/get_all_images.php

where the ip: 192.168.1.2 is IPv4 address. In windows Run > CMD > Ipconfig
4
min2bro

pour le serveur wamp, utilisez 10.0.2.2 pour l'hôte local Par exemple. 10.0.2.2/phpMyAdmin

et pour Tomcat, utilisez 10.0.2.2:8080/server

3
Ali Nawab

essayez d’ajouter l’autorisation en dehors de la balise d’application du manifeste, en plus des réponses susmentionnées, telles que changer localhost en 10.0.2.2:8080 

3
Gridtestmail

Veuillez vérifier que vous utilisez le périphérique Android sur le même réseau. Cela résoudra le problème. s'amuser!!!

2

Lorsque vous testez avec un périphérique, vous souhaitez ajouter l'adresse IP de votre PC.

dans pc exécuté dans cmd Ipconfig

dans ubuntu run terminal ifconfig

Ensuite, utilisez "http://your_pc_ip_address:8080/register" au lieu d'utiliser "http://10.0.2.2:8080/register"

in my pc = 192.168.1.3

et aussi ajouter une autorisation Internet à Manifest 

<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
2
sam

J'utilise PHP pour webservice et Android 4.x. dispositif pour se connecter au webservice. J'ai eu un problème similaire où, en utilisant 10.0.2.2 fonctionnait bien avec l'émulateur mais ne parvenait pas à se connecter à partir du périphérique. La solution qui a fonctionné pour moi est la suivante: Trouver l'adresse IP de votre ordinateur ... dire 192.168.0.103 Trouver le port de votre Apache ... dire 8080 Ouvrez maintenant le fichier httpd.conf et localisez la ligne suivante Listen 127.0.0.1:8080 Après cette ligne, ajoutez ce qui suit Listen 192.168.0.103:8080 Maintenant, si vous utilisez 192.168.0.103:8080 dans votre code Android, il se connectera!

1
Sandeep Chavarkar

Une des choses simples et fondamentales qui conduit à cette erreur est: No Internet Connection

Activez d'abord la connexion Internet de votre appareil.

(Peut-être que nous oublierons de le faire)

0
Prabs

Deux solutions pour cette erreur:

1 . Ajoutez cette permission dans votre androidManifest.xml de votre projet Android

<uses-permission Android:name="Android.permission.INTERNET"/>

2 . Commencez par activer la connexion Internet de votre appareil.

0
Nageeb Mohammed

J'ai eu le même problème, puis j'ai découvert que le wifi n'était pas connecté à mon smartphone. Après avoir activé le wifi et connecté au réseau similaire (avec mon ordinateur portable), il y avait un autre problème: le pare-feu de l'ordinateur portable bloquait les connexions entrantes. Une fois le pare-feu corrigé, j'ai pu communiquer à partir de mon application Android avec le service Web exécuté sur l'ordinateur portable.

0
Farkhod