【发布时间】:2014-02-05 13:51:19
【问题描述】:
我正在开发一个 android 应用程序,它在我的 XAMPP apache 服务器上调用一个 PHP 文件。使用http://10.0.2.2/path/file.php 进行本地测试时,一切正常。
当我尝试从智能手机调用它时,它不起作用。我把地址改成了我的外网IPhttp://xx.xx.xx.xx/path/file.php,把80端口转发到我PC的本地地址80端口,还是不行。
public ArrayList<Spieler> getAllSpieler() {
ArrayList<Spieler> alleSpieler = new ArrayList<Spieler>();
// PHP-Datei aufrufen
String url = "http://xx.xx.xx.xx/langenacht/getAllSpieler.php";
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpResponse response = null;
try {
response = httpclient.execute(httpget);
} catch (IOException e) {
e.printStackTrace();
}
//use returned values
}
这在 AVD 上有效,如果我在浏览器中调用 http://xx.xx.xx.xx/langenacht/getAllSpieler.php 它也有效(仅当我在具有外部 IP 的路由器的 wifi 中时),但当我在手机上尝试时无效。我的 AVD 目前正在运行 android 2.2,因为当我尝试使用 android 4.x 时不断收到错误消息 我的 HTC ONE 有安卓 4.3。应用程序在加载数据失败时崩溃,但通常应该将微调器留空。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spieler_auswaehlen);
spinnerSpielerAuswaehlen = (Spinner) findViewById(R.id.spinnerSpielerAuswaehlen);
ArrayList<Spieler> alleSpieler = strafenverwaltungsinstanz.getAllSpieler();
String[] spielerliste = new String[alleSpieler.size()];
for (int i = 0; i < spielerliste.length; i++) {
spielerliste[i]=alleSpieler.get(i).getVorname()+" "+alleSpieler.get(i).getNachname();
}
ArrayAdapter<String> adapterSpieler = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, spielerliste);
// Specify the layout to use when the list of choices appears
adapterSpieler
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinnerSpielerAuswaehlen.setAdapter(adapterSpieler);
//and so on
}
【问题讨论】:
-
通过 wifi 连接安卓手机到你的局域网使用 10.0.2.2/path/file.php ??利润
-
我想在任何地方都使用该应用程序,而不仅仅是在我的无线网络中。奇怪的是它知道在我的模拟器上使用我的外部 IP 但仍然无法在我的手机上运行。
-
当你想在任何地方使用它时,把它放在互联网上合适的网络服务器上,不要使用你的宽带:(
-
这是一个我需要编写代码作为考试的应用程序,我不想为此支付网络服务器费用。