Connexion localhost via Android – Connexion à 10.0.2.2 refusée

J’ai un serveur Apache installé sur mon PC où je héberge un fichier PHP.

Ensuite, j’ai essayé de me connecter à ce fichier en utilisant eclipse, mais cela me donne toujours une erreur ci-dessous

connection to http://10.0.2.2:8080 refused. 

J’ai essayé de changer l’adresse pour les suivantes, mais j’ai eu une erreur similaire tout le temps.

 http://10.0.2.2 http://127.0.0.1 http://localhost 

Est-ce que quelqu’un peut m’aider s’il vous plait.

EDITED: Juste pour information, je peux accéder au serveur distant (par exemple, www.mydomain.com) sans aucun problème.

DOSSIER DE CLASSE:

 HttpClient httpclient = new DefaultHttpClient(); Log.d("test","t0"); HttpPost httppost = new HttpPost("http://10.0.2.2:8080/mylibman/data.php"); Log.d("test","t1"); HttpResponse response = httpclient.execute(httppost); // error here Log.d("test","t2"); 

Manifeste Android:

     

Erreur LogCat:

 11-16 02:02:20.803: E/log_tag(1427): Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2:8080 refused 11-16 02:02:20.803: E/log_tag(1427): Error converting result java.lang.NullPointerException: lock == null 11-16 02:02:20.803: E/log_tag(1427): Error parsing data org.json.JSONException: End of input at character 0 of 

bien aller à Apache httpd.conf (situé dans le dossier Apache): et rechercher

 Order Deny,Allow Deny from all Allow from 127.0.0.1 

et vérifiez si la deuxième ligne est Deny, si c’est le cas, changez la en:

 Allow from all 

puis redémarrez le serveur Appache et dites-moi le code de retour.

modifier

essayez-le dans votre appareil réel:

allez dans CMD et tapez ipconfig sous IPv4, prenez l’adresse IP et changez l’adresse IP:

 http://192.168.0.106:8080/mylibman/data.php // similar to this. 

Désactivez le pare-feu et toute application antivirus sur votre PC

et s’il vous plaît donnez-moi les commentaires.

Mike m’a beaucoup aidé sur cette question. Alors voici mes étapes pour éviter cette connexion refusée .

1) Ajouter si pour tester le SDK Android. Il semble que dans les nouvelles versions, vous devez explicitement permettre que la connexion soit ouverte dans un thread différent:

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (android.os.Build.VERSION.SDK_INT > 9) { SsortingctMode.ThreadPolicy policy = new SsortingctMode.ThreadPolicy.Builder().permitAll().build(); SsortingctMode.setThreadPolicy(policy); System.out.println("*** My thread is now configured to allow connection"); } 

2) Ajoutez une exception pour votre port:

dans votre cas, autoriser la connexion entrante pour le port 8080

3) tester votre connexion en parcourant l’url souhaitée localement

utilisez votre navigateur et essayez de visiter http://10.0.2.2:8080 localement

4) Ajouter dans votre fichier manifeste une autorisation pour internet:

    

J’utilise Wamp, et son apache écoute servername localhost et le port 8080 (autoriser de tout dans httpd.conf).

Mon adresse IP locale est quelque chose de similaire à 192.168.0.XXX/folder/my-page-here

Vous pouvez utiliser votre adresse IP réelle pour atteindre votre serveur virtuel. Jetez un oeil à ma réponse ici . J’espère que ça aide.

Si votre version du SDK est inférieure à 9, ajoutez le code ci-dessus pour la version du SDK, certaines modifications apscopes à la mise à jour Apache httpd.conf en tant que ligne refusant tous..Remplacez cette phrase. 10.0.2.2:8080 port et ligne d’autorisation dans le fichier AndroidManifest d’Android

    

Je résous ce problème en écrivant mon adresse IP depuis cmd -> ipconfig dans l’URL:

  HttpPost httppost = new HttpPost( "http://192.168.xx/mylibman/data.php" );