使用 Android-App 通过 Internet 访问本地 Apache 服务器 (XAMPP)
Posted
技术标签:
【中文标题】使用 Android-App 通过 Internet 访问本地 Apache 服务器 (XAMPP)【英文标题】:Access local Apache Server (XAMPP) over Internet with Android-App 【发布时间】: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 但仍然无法在我的手机上运行。 当你想在任何地方使用它时,把它放在互联网上合适的网络服务器上,不要使用你的宽带:( 这是一个我需要编写代码作为考试的应用程序,我不想为此支付网络服务器费用。 【参考方案1】:我使用 AsyncTasks 来实现对我的 Apache 服务器的调用,它现在工作正常。
【讨论】:
以上是关于使用 Android-App 通过 Internet 访问本地 Apache 服务器 (XAMPP)的主要内容,如果未能解决你的问题,请参考以下文章