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?
si vous utilisez Emulator pour exécuter votre application sur un serveur local. mentionner la ip
as10.0.2.2
locale et donner l'autorisation Internet à votre application
<uses-permission Android:name="Android.permission.INTERNET" />
<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.
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 .
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
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
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
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!!!
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>
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!
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)
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.
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.