我目前正在尝试让我真正的Android设备(三星Galaxy S4 mini)访问我在我的localhost中的PHP脚本。以下代码是我的位代码。该代码应该使用我创建的login_tenant.php脚本检查用户名和密码(如果它存在于我的mysql数据库中)。
代码:
void loginAsTenant() {
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/aircraftoperatorapp/login_tenant.php");
String username = txtUsername.getText().toString();
String password = txtPassword.getText().toString();
nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
response = httpclient.execute(httpPost);
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
final String response = httpclient.execute(httpPost, responseHandler);
System.out.println("Response: " + response);
runOnUiThread(new Runnable() {
public void run() {
//lblResponse.setText("Response from PHP: " + response);
dialog.dismiss();
}
});
if(response.equalsIgnoreCase("User Found")){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(Homepage.this,"Login Success", Toast.LENGTH_SHORT).show();
//Intent i = new Intent(getApplicationContext(), ArrivalTimeSched.class);
//startActivity(i);
}
});
Intent intent = new Intent("com.example.aircraftoperatorapp.TenantPage");
users = new Bundle();
users.putString("loggedInTenant", username);
intent.putExtras(users);
startActivityForResult(intent, requestCode);
}
else {
showAlert();
}
}
catch (Exception e ){
dialog.dismiss();
System.out.println("Exception : " + e.getMessage());
}
}
我可以从我的模拟器访问本地主机,它工作正常。但
当我在物理设备中运行它时,它返回了一个错误:&#34;异常连接到10.0.2.2被拒绝。
你们有些人可以告诉我如何解决这个问题吗? 我尝试了几件事,但他们没有工作 1.我将localhost的路径更改为10.0.2.2:8080 ..等等 我关掉了防火墙 我尝试将路径替换为手机的IP地址。
有什么建议吗?我感谢任何帮助!提前谢谢!
答案 0 :(得分:1)
因此,通过您的模拟器访问本地主机,但您无法从Android设备访问相同的主机。
这意味着您的Android设备使用2G / 3G或WIFI连接来点击本地主机。如果您使用localhost进行连接,那么您必须位于同一网络中,那么只有您可以访问localhost。
但是在模拟器中,你在同一个网络(可能是本地主机网络),这就是它工作的原因。
最后,您的方法的可能解决方案是
也在Android设备中使用相同的网络(本地主机网络)。意味着将Wifi连接到相同的本地主机互联网连接。这次2G / 3G连接不起作用,因为它们不在同一个网络中
在外部部署构建一些,并访问外部IP地址进行连接。这次2G / 3G或WIFI都能正常工作
答案 1 :(得分:0)
你可以检查/ etc / apache2 / sites-available / default文件,下面的行是否像这样(Allow)或Deny
<Directory />
AllowOverride All
</Directory>