簡體   English   中英

如何從真正的android設備訪問localhost

[英]How to access localhost from a real android device

我目前正在嘗試使我的真實android設備(三星Galaxy S4 mini)訪問本地主機中的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());

    }

}

我可以從仿真器訪問本地主機,它運行正常。

當我在物理設備中運行此命令時,它返回錯誤:“與10.0.2.2的異常連接被拒絕。

你們中的一些人能告訴我如何解決這個問題嗎? 我嘗試了幾件事,但沒有成功1.我將本地主機的路徑更改為10.0.2.2:8080 ..依此類推2.我關閉了防火牆3.我嘗試將路徑替換為手機的IP地址。

有什么建議么? 感謝您的幫助! 提前致謝!

因此,通過模擬器您可以訪問本地主機,但無法從android設備訪問同一主機。

這意味着您的Android設備使用2G / 3G或WIFI連接來訪問本地主機。 如果那時使用本地主機進行連接,那么您必須位於同一網絡中,那么只有您可以訪問本地主機。

但是在仿真器中,您可以在同一網絡(可能是本地主機網絡)中運行,這就是為什么。

最后,可能的解決方案是

  • 還要在Android設備中使用相同的網絡(本地主機網絡)。 意味着使用Wifi連接到相同的本地主機Internet連接。 這次2G / 3G連接無法使用,因為它們不在同一網絡中

  • 將構建部分部署到外部,並訪問外部IP地址進行連接。 這次2G / 3G或WIFI都可以使用

是否可以檢查/ etc / apache2 / sites-available / default文件,下面的行本身是否是這樣(允許)還是拒絕?

<Directory />
    AllowOverride All
 </Directory>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM