使用 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)的主要内容,如果未能解决你的问题,请参考以下文章

Android-App增量更新的使用姿势

Android-App性能测试工具GT的使用方法

攻防世界 reverse android-app-100

Android-App 常用图标尺寸规范汇总

Android-App 常用图标尺寸规范汇总

Android-APP流量测试及弱网测试