2017-03-08 47 views
0

我想從數據庫獲取信息。當我使用沒有參數的查詢(例如「Select * from users;」我的腳本工作正常Android Volley - POST參數未達到PHP腳本

現在我有下面的腳本返回一個空數組當我替換腳本中的$ groupId字符串值例如,「組1」),它返回預期項目

<?php 


$sql = ""; 
if($_SERVER['REQUEST_METHOD']== 'POST') { 
$flag = array(); 

$groupId = $_POST['groupId']; 



require_once('dbConnect.php'); 

$sql = "SELECT * FROM users where groupId = '$groupId'"; 

if($out = mysqli_query($con,$sql)){ 
//echo "Successfully Registered"; 

    while($row = mysqli_fetch_array($out)) 
    { 

     $flag[] = $row; 

    } 
    print(json_encode($flag)); 

}else{ 
echo "Could not register"; 

} 
}else{ 
    echo 'error'; 
} 


//mysqli_close($con); 
?> 

我調用下面的函數與HashMap的hashMapGetNames.put("groupId", "Group#1");

然後我得到一個空數組和信息:「不,組ID是未設置「

public ArrayList<String> get(String url, final HashMap<String, String> hashMap, final Context context) { 


     //Download the items from DB 
     final ArrayList<String> items = new ArrayList<>(); 
     RequestQueue queue = Volley.newRequestQueue(context); 
     JSONObject parameters = new JSONObject(hashMap); 
     final JsonRequest<JSONArray> jsonArrayRequest = new 
       JsonRequest<JSONArray>(Request.Method.GET, url, parameters.toString(), 
       new com.android.volley.Response.Listener<JSONArray>() { 

        @Override 
        public void onResponse(JSONArray jsonArray) { 
         if(jsonArray == null){ 
          Log.d("Downloader", "FAIL: NO NAMES FOUND"); 
         } 
         else { 
          for (int zähler = 0; zähler < jsonArray.length(); zähler++){ 
           try { 
            Log.d("Downloader", "sind bei zähler " + zähler); 
            JSONObject object = jsonArray.getJSONObject(zähler); 
            String name = object.getString("name"); 
            Log.d("Name", name); 
            items.add(name); 
           } 
          catch (JSONException e) { 
           Log.d("Downloader", "Catching exception"); 
           e.printStackTrace(); 
          } 
          } 
         } 



        } 
       }, new com.android.volley.Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d("Downloader", "Error: " + error.toString()); 

      } 

     }) 

       { 
        @Override 
        protected Map<String, String> getParams() throws AuthFailureError { 
         Log.d("Downloader", "gettingParams"); 
         return hashMap; 
        } 

        @Override 
        protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) { 
          Log.d("Downloader", "parsing Network response"); 
         try { 
          String jsonString = new String(response.data, 
            HttpHeaderParser 
              .parseCharset(response.headers)); 
          Log.d("Downloader", "Parsing success"); 
          return Response.success(new JSONArray(jsonString), 
            HttpHeaderParser 
              .parseCacheHeaders(response)); 
         } catch (UnsupportedEncodingException e) { 
          Log.d("Downloader", e.toString()); 
          return Response.error(new ParseError(e)); 

         } catch (JSONException je) { 
          Log.d("Downloader", je.toString()); 
          return Response.error(new ParseError(je)); 
         } 
        } 
       }; 

     queue.add(jsonArrayRequest); 

     return items; 

    } 

因此腳本似乎是正確的,但參數沒有達到腳本。任何錯誤可能隱藏的想法?

編輯:我編輯了代碼,如下面教程中所示的代碼所示,並使用相同的dbConnect.php文件。但它會打印出錯誤 - 所以問題仍然存在。這意味着請求方法不是「Post」。 Android的監控打印出:

parsing Network response

Downloader: Parsing success

Error: com.android.volley.ParseError: org.json.JSONException: End of input at character 0

回答

1

試試這個代碼...

  @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 


      //Creating parameters 
      Map<String,String> params = new Hashtable<String, String>(); 

      //Adding parameters 
      params.put("groupId", "122"); 


      //returning parameters 
      return params; 
     } 
+0

THX你的答案。我將「122」改爲「Zehn」,這是一個應該返回一些項目的值。 - >結果:清空ArrayList。但是當我直接用「Zehn」替換PHP腳本中的groupId時,我得到了一些項目。 – uwieuwe4

+0

使用此依賴性compile'c​​om.mcxiaoke.volley:library-aar:1.0.0'如果不起作用。你可能做錯了什麼。 –

+0

謝謝。它清楚地看到我做錯了什麼。但我不知道它可能是什麼 – uwieuwe4