如何配置我的 Android 模拟器来访问我的本地主机?
How do I configure my Android emulator to access my localhost?
我正在尝试将模拟器的网络地址更改为 10.0.2.2,以便我可以使用存储在本地主机上的 PHP 对其进行测试,因为 127.0.0.1 是模拟系统自己的环回接口,而不是那个运行 在我的主机开发机器上。
我的系统知识有限,那么我需要配置堆栈的哪一部分才能实现这一目标?
我需要更改主机上本地主机的默认 IP 吗?
我需要在模拟器设置中配置什么吗?
下面的连接代码是否需要更改?
public class UpdatePrediction extends AsyncTask<String, String, String> {
String user;
int success;
Context context;
// JSON parser class
JSONParser jsonParser = new JSONParser();
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PREDICTION = "prediction";
private static final String TAG_OCCUPANCY_PREDICTION = "occupancy_prediction";
private static final String url_prediction = "http://localhost/android_connect/get_prediction.php";
/**
* Getting product details in background thread
* */
public UpdatePrediction(Context context) {
this.context = context;
}
protected String doInBackground(String... param) {
SharedPreferences sharedPref = context.getSharedPreferences("user",
Context.MODE_PRIVATE);
user = sharedPref.getString("name", "codohert");
Log.i("update", "started");
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pid", user));
// getting product details by making HTTP request
// Note that product details url will use GET request
JSONObject json = jsonParser.makeHttpRequest(url_prediction, "GET",
params);
// check your log for json response
Log.d("Prediction Details", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Log.i("update", "success");
// successfully received product details
JSONArray predictionObj = json.getJSONArray(TAG_PREDICTION); // JSON
// Array
// get first product object from JSON Array
JSONObject prediction = predictionObj.getJSONObject(0);
String predict = prediction.getString(TAG_OCCUPANCY_PREDICTION);
String shour = predict.substring(11, 12);
String smin = predict.substring(14, 15);
Integer hour = Integer.parseInt(shour);
Integer minute = Integer.parseInt(smin);
SetTime(hour, minute);
return null;
} else {
Log.i("update", "failed");
return null;
}
} catch (JSONException e) {
Log.i("update", "catch");
e.printStackTrace();
return null;
}
}
public void SetTime(int hourOfDay, int minute) {
SharedPreferences sharedPref = context.getSharedPreferences(
"prediction", Context.MODE_PRIVATE);
SharedPreferences.Editor editorh = sharedPref.edit();
editorh.putInt("prediction_hour", hourOfDay);
editorh.commit();
SharedPreferences.Editor editorm = sharedPref.edit();
editorm.putInt("prediction_min", minute);
editorm.commit();
Toast.makeText(context, "Set Prediction", Toast.LENGTH_SHORT).show();
}
}
我是否可以在下面的 php 文件中更改目的地?
db_config.php
<?php
/*
* All database connection variables
*/
define('DB_USER', "root"); // db user
define('DB_PASSWORD', ""); // db password (mention your db password here)
define('DB_DATABASE', "habitabilitystudy"); // database name
define('DB_SERVER', "localhost"); // db server
?>
我以前问过这个问题,有人告诉我 "Simply use 10.0.2.2 to connect to the localhost on your computer." 和 "Use your code to connect to the address.",但我不知道那到底指的是什么。
您应该更改 android 客户端代码,而不是 php 脚本。
只需更改以下行:
`private static final String url_prediction = "http://localhost/android_connect/get_prediction.php";`
至
`private static final String url_prediction = "http://10.0.2.2/android_connect/get_prediction.php";`
我正在尝试将模拟器的网络地址更改为 10.0.2.2,以便我可以使用存储在本地主机上的 PHP 对其进行测试,因为 127.0.0.1 是模拟系统自己的环回接口,而不是那个运行 在我的主机开发机器上。
我的系统知识有限,那么我需要配置堆栈的哪一部分才能实现这一目标?
我需要更改主机上本地主机的默认 IP 吗?
我需要在模拟器设置中配置什么吗?
下面的连接代码是否需要更改?
public class UpdatePrediction extends AsyncTask<String, String, String> {
String user;
int success;
Context context;
// JSON parser class
JSONParser jsonParser = new JSONParser();
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PREDICTION = "prediction";
private static final String TAG_OCCUPANCY_PREDICTION = "occupancy_prediction";
private static final String url_prediction = "http://localhost/android_connect/get_prediction.php";
/**
* Getting product details in background thread
* */
public UpdatePrediction(Context context) {
this.context = context;
}
protected String doInBackground(String... param) {
SharedPreferences sharedPref = context.getSharedPreferences("user",
Context.MODE_PRIVATE);
user = sharedPref.getString("name", "codohert");
Log.i("update", "started");
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pid", user));
// getting product details by making HTTP request
// Note that product details url will use GET request
JSONObject json = jsonParser.makeHttpRequest(url_prediction, "GET",
params);
// check your log for json response
Log.d("Prediction Details", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Log.i("update", "success");
// successfully received product details
JSONArray predictionObj = json.getJSONArray(TAG_PREDICTION); // JSON
// Array
// get first product object from JSON Array
JSONObject prediction = predictionObj.getJSONObject(0);
String predict = prediction.getString(TAG_OCCUPANCY_PREDICTION);
String shour = predict.substring(11, 12);
String smin = predict.substring(14, 15);
Integer hour = Integer.parseInt(shour);
Integer minute = Integer.parseInt(smin);
SetTime(hour, minute);
return null;
} else {
Log.i("update", "failed");
return null;
}
} catch (JSONException e) {
Log.i("update", "catch");
e.printStackTrace();
return null;
}
}
public void SetTime(int hourOfDay, int minute) {
SharedPreferences sharedPref = context.getSharedPreferences(
"prediction", Context.MODE_PRIVATE);
SharedPreferences.Editor editorh = sharedPref.edit();
editorh.putInt("prediction_hour", hourOfDay);
editorh.commit();
SharedPreferences.Editor editorm = sharedPref.edit();
editorm.putInt("prediction_min", minute);
editorm.commit();
Toast.makeText(context, "Set Prediction", Toast.LENGTH_SHORT).show();
}
}
我是否可以在下面的 php 文件中更改目的地?
db_config.php
<?php
/*
* All database connection variables
*/
define('DB_USER', "root"); // db user
define('DB_PASSWORD', ""); // db password (mention your db password here)
define('DB_DATABASE', "habitabilitystudy"); // database name
define('DB_SERVER', "localhost"); // db server
?>
我以前问过这个问题,有人告诉我 "Simply use 10.0.2.2 to connect to the localhost on your computer." 和 "Use your code to connect to the address.",但我不知道那到底指的是什么。
您应该更改 android 客户端代码,而不是 php 脚本。 只需更改以下行:
`private static final String url_prediction = "http://localhost/android_connect/get_prediction.php";`
至
`private static final String url_prediction = "http://10.0.2.2/android_connect/get_prediction.php";`