错误: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:我不会说英语
答案 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/”);