2017-03-08 51 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