2014-09-22 39 views
1

我有一個位於localhost:88的兩列(id,name)的數據庫。我試圖從我的android應用程序進入它,但在解析Json時,應用程序給出了JSONException。我試着從沒有Json解析的PHP獲取數據,只是一個字符串。但它只獲得NULL。 這裏是我的PHP腳本:Android的HttpPost從PHP腳本獲取NULL而不是JSONArray

<?php 

$con = mysqli_connect('127.0.0.1:3306', 'root', '', 'test'); 

if(mysqli_connect_errno()) 
    echo 'Failed to connect to MySQL: ' . mysqli_connect_error(); 

$query = mysqli_query($con, "SELECT * FROM example"); 
$rows = array(); 

while($r = mysqli_fetch_assoc($query)) 
    $rows[] = $r; 

print(json_encode($rows)); 
    mysqli_close($con);  
?> 

這是我的方法:

public class MainActivity extends Activity 
{ 
    TextView txt; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_layout); 

     txt = (TextView) findViewById(R.id.textView); 

     txt.setText(getDataFromDB()); 
    } 

    public String getDataFromDB() 
    { 
     try 
     { 
      HttpPost httpPost = new HttpPost("http://127.0.0.1:88/basicphp/GetData.php"); 

      HttpClient httpClient = new DefaultHttpClient(); 
      ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
      final String response = httpClient.execute(httpPost, responseHandler); 

      return response.trim(); 
     } 
     catch(Exception e){ 
      return "error\n" + e.getMessage(); 
     } 
    } 
} 

,當我在我的瀏覽器 「http://localhost:88/basicphp/GetData.php」 的類型,我得到這樣的: 「[{」 ID 「:」 1" , 「名」: 「約翰」}]」。所以我想至少讓我的TextView的這個字符串,但TextView的只得到空:(那麼,我究竟做錯了什麼?

+0

[NetworkOnMainThreadException]的可能性(http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception)。考慮使用'AsyncTask'或'Handler'。 – 2014-09-22 07:12:50

+0

試試這個鏈接:http://stackoverflow.com/questions/25884620/get-response-after-posting-to-server/25884706#25884706 – prakash 2014-09-22 07:14:12

回答