2012-08-27 41 views
0

我創建了一個應用程序,它使用php從mysql獲取數據。但是,當我從我的Android應用程序調用PHP文件時,我將下面的內容放到了我的LogCat窗口中。使用PHP到Android無法從MySql獲取數據?

08-26 21:07:57.748: V/(1036): Response : [email protected] 
08-26 21:07:57.758: V/(1036): Entity : [email protected] 
08-26 21:07:57.839: V/(1036): Result : <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
08-26 21:07:57.839: V/(1036): <html><head> 
08-26 21:07:57.839: V/(1036): <title>403 Forbidden</title> 
08-26 21:07:57.839: V/(1036): </head><body> 
08-26 21:07:57.839: V/(1036): <h1>Forbidden</h1> 
08-26 21:07:57.839: V/(1036): <p>You don't have permission to access /PHP/getAllPeopleBornAfter.php 
08-26 21:07:57.839: V/(1036): on this server.</p> 
08-26 21:07:57.839: V/(1036): </body></html> 

但是,當我使用wamp服務器運行.php時,它可以成功獲取數據。我無法理解我犯了什麼錯誤。

以下是我的Android代碼

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("year","1980")); 

try{ 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://10.167.122.24 /PHP/ getAllPeopleBornAfter.php"); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity entity = response.getEntity(); 
    InputStream is = entity.getContent(); 

    Log.v("","Response : "+response); 
    Log.v("","Entity : "+entity); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 

    while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    is.close(); 
    result=sb.toString(); 
    Log.v("","Result : "+result); 
}catch(Exception e){ 
    Log.v("log_tag", "Error in http connection "+e); 
} 

請給我一些想法。先謝謝你。

+2

沒有你的服務器有htaccess的認證? –

+0

謝謝你的建議,但你能告訴我在哪裏可以找到htaccess認證。我在本地機器上使用了wamp服務器。等待你的重播......... – himAndroid

+0

當你在瀏覽器中打開這個URL時,它會詢問你的服務器是否有htaccess認證。 –

回答

3

1)下面是相關信息:

You don't have permission to access /PHP/getAllPeopleBornAfter.php

2)這是從你的Windows服務器來。

您有權從您的Android手機「接觸」互聯網。

3)你沒有獲准用於遠程客戶端(不只是Android的,但其他任何PC上的任何 Web瀏覽器的網絡上()訪問文件

建議:

4)檢查您的Web服務器根目錄的httpd.conf和/或.htaccess權限。

這裏有一個很好的鏈接和一個很好的例子:

+0

非常感謝你重播我。但是,請您簡單地告訴我在web服務器根目錄中可以找到的htaccess權限。我使用wamp服務器。 – himAndroid

+0

@alex_android_dev - 我會在你的http.conf文件中以''開頭。有很多解釋它的鏈接,包括我引用的鏈接和WAMP文檔。祝你好運! – paulsm4

0

你的錯誤日誌說,你已經忘了給上網權限在AndroidManifest.xml

只寫按照您的AndroidManifest.xml文件權限。

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
+2

真的嗎?當然,403從服務器回來,而不是在Android內部產生? –

+0

@從此處 - 你絕對正確。這*是來自* server *的錯誤403。 Android已成功連接到WAMP服務器。 – paulsm4

+0

雅,我也已經把我的androidmanifest – himAndroid

0

檢查,如果你在你的Android清單上網權限:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

ya的權限,我已經把我的androidmanifest.xml – himAndroid

+0

ahh我對不起:/我也沒有看到有人也發佈了答案。我想我們在同一時間張貼><...我會看看其他選項,但@ paulsm4似乎很可信 – aug