2012-12-28 92 views
0

我正在開發一個Android應用程序,該應用程序讀取在線PHP腳本並回顯一個帶有不同結果的JSON數組。我也從應用程序發送POST變量到PHP腳本中。當我從網站發佈到腳本時,它工作正常,POST數據存在。當我從應用中發佈信息時,POST數據是空的。

private JSONArray addBusiness(String businessName, String businessCategory, String businessDescription) { 
    String result = ""; 
    InputStream is = null; 
    try { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost("http://somesite.com/testAndroid.php"); 

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("id", "12345")); 
     nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpClient.execute(httpPost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } catch (Exception e) { 
     Log.e("log_tag", "Error in http connection " + e.toString()); 
    } 

    try { 
     Log.e("log_tag", "INSIDE TRY/CATCH"); 
     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.e("log_tag", "RESULT: " + result); 
    } catch (Exception e) { 
     Log.e("log_tag", "Error converting result " + e.toString()); 
    } 

    try { 
     return new JSONArray(result); 
    } catch (JSONException e) { 
     Log.e("log_tag", "Error parsing data " + e.toString()); 
    } 
    return null; 
} 

這裏是空的PHP代碼。有任何想法嗎?另外,我使用GoDaddy的共享Linux主機上運行PHP 5.2

<?php 
$return = array(); 
$return['result'] = 'pooping for the Internet'; 
$return['business'] = 'BUSINESS'; 
$return['post'] = $_POST['id']; 
echo '['.json_encode($return).']'; 
?> 

所有其他$返回的數據是正確的,除了「後的迴歸。思考?

+0

如果剩下的問題出現在你的'$ _POST'中。確保您的發佈正確。嘗試測試帖子是否正確通過 – cjds

回答

2

謝謝你的所有提示。問題最終在我的.htaccess文件中。我忘了我有一個重寫規則,將「www」放在網址前面。我正在嘗試將POST發送到我的站點,但沒有導致POST數據丟失的開始「www」。我覆蓋了正在工作的子目錄的.htaccess文件,現在一切正常!再次感謝提示!

0

您的應用程序是否生成PHP代碼結果的HTTP請求?

就像您可能使用Perl或Python一樣,您可以解釋爲PHP (CLI-Mode),如果您這樣做,則不涉及任何HTTP協議。如果您的腳本通過網絡服務器提供,則確實應該有$_POST$_GET$_REQUEST陣列。

您可以使用this查詢是否有http-header!