错误:org.apache.http.conn.HttpHostConnectException:拒绝连接到http://10.0.2.2:8080

时间:2014-06-02 05:05:57

标签: php android eclipse rest

错误:org.apache.http.conn.HttpHostConnectException:与http://10.0.2.2:8080的连接被拒绝当Android在php中使用rest api时,我连接到api

我通过usb使用eclipse和我的Android手机运行我的应用程序。我的api休息是在php中使用并使用xampp,它在端口8080 http://localhost:8080上运行。 Xampp可以与我的其他Web应用程序一起使用,但Android不起作用。

- 此外,我的手机和电脑未连接到同一网络。  -rest api可以在没有互联网的情况下工作吗?

我在android中的代码是这样的:

 private class TareaWSInsertar extends AsyncTask<String,Integer,Boolean> {
        //agregado user_id, user_fullname, user_email
        private int user_id;
        private String user_fullname;
        private  String user_email;

        protected Boolean doInBackground(String... params) {
            boolean resul = true;

            HttpClient httpClient = new DefaultHttpClient();


            HttpPost post = new HttpPost("http://10.0.2.2:8080/rest/login/");
        post.setHeader("content-type", "application/json");

        try
            {
            //Construimos el objeto cliente en formato JSON
            JSONObject dato = new JSONObject();


            dato.put("email", params[0]);
            dato.put("pwd", params[1]);

            StringEntity entity = new StringEntity(dato.toString());
            post.setEntity(entity);

                HttpResponse resp = httpClient.execute(post);
                String respStr = EntityUtils.toString(resp.getEntity());

                JSONObject respJSON = new JSONObject(respStr);

                user_id = respJSON.getInt("user_id");
                user_fullname = respJSON.getString(user_fullname);
                user_email = respJSON.getString("user_email");


                if(!respStr.equals("true"))
                    resul = false;
            }
            catch(Exception ex)
            {
                Log.e("ServicioRest","Error!", ex);
                resul = false;
            }

            return resul;
        }

            protected void onPostExecute(Boolean result) {

            if (result)
            {
             Toast.makeText(getApplicationContext(), "" + user_id+ "-" +    user_fullname + "-" + user_email, Toast.LENGTH_LONG).show();
            }
        }
    }

我尝试过不同的方式:

http://10.0.2.2:8080/rest/login
 http://localhost:8080/rest/login
 http:/127.0.0.1:8080/rest/login

注意:我读到http://10.0.2.2仅在使用android模拟器时有效, 我通过USB连接手机。

但没有任何作用,甚至<uses-permission android:name="android.permission.INTERNET"/>我在我的清单中添加了。

抱歉帮助我!!,PD:我不会说英语

2 个答案:

答案 0 :(得分:3)

首先你有一个错误:

 HttpPost post = new HttpPost ( " http:/127.0.0.1:8080/rest/login/ "); 

应该是:

HttpPost post = new HttpPost ( " http://127.0.0.1:8080/rest/login/ ");

接下来,如果手机没有连接到您的计算机网络,它将永远不会连接到您的本地服务器,即您的计算机。

如果您家中有wifi连接,请检查运行xampp的计算机的IP地址,并将其替换为localhost。如果没有wifi连接,并且您的计算机连接到调制解调器(没有路由器),那么只需检查您的IP地址here并将其替换为localhost

答案 1 :(得分:1)

我设法通过从cmd写我的IP地址来解决这个问题 - &gt; url中的ipconfig:

HttpPost post = new HttpPost(“http://192.168.x.x/rest/login/”);