2017-02-10 161 views
0

我想使用POST方法发送数据并获得JSONArray数组,但我没有从服务器获取数据,当我测试我的PHP文件与特定值然后它没关系,但是当我使用POST方法发送密钥,然后不给任何数据。获取没有数据发送使用JSONArray的POST请求使用volley

这里是我的JSONArray请求:

final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, jsonURL, (String) null, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        int count = 0; 
        while (count < response.length()){ 
         try { 
          JSONObject jsonObject = response.getJSONObject(count); 
          DataProvider dataProvider = new DataProvider(jsonObject.getString("Name"), 
            jsonObject.getString("Url"), 

          arrayList.add(dataProvider); 
          count++; 

         } catch (JSONException e) { 

          Toast.makeText(context,"Error",Toast.LENGTH_SHORT).show(); 
          e.printStackTrace(); 
         } 
        } 
        CarFragment.adapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

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

      Map<String,String> param = new HashMap<String,String>(); 
      param.put("id","01675904620"); 
      return param; 
     } 
    }; 
    Singletone.getSingletone(context).addToRequest(jsonArrayRequest); 

,这里是我的PHP代码:

<?php 

$user_id = $_POST["id"]; 

$db_name = "andr"; 
$user_name = "user"; 
$password = "12345"; 
$server = "localhost"; 

$con = mysqli_connect($server,$user_name,$password,$db_name); 


$result = mysqli_query($con, "SELECT * FROM user WHERE user_id = ".$user_id.";") or die("Error: " . mysqli_error($con)); 

$response = array(); 

while($row = mysqli_fetch_array($result)) 
{ 
    array_push($response, array("Name"=>$row["name"],"Url"=>$row["image_url"])); 
} 

echo json_encode($response); 

?> 
+0

'回报super.getParams();'seriosuly? – Selvin

+0

塞尔文是错误的后。我在没有获取数据时尝试过。感谢您的更正。但是你知道我的实际错误在哪里吗? –

回答

1

这是你如何使用凌空

StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show(); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show(); 
       } 
      }){ 
     @Override 
     protected Map<String,String> getParams(){ 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put("ID","1234"); 
      return params; 
     } 

    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 

将数据发送到服务器上面,你可以看到,一旦您将ID发送到服务器,服务器会将其响应发送给您的应用程序,并在此处可用String response。 您可以进一步处理此响应并获取您想要的任何内容。

JSONObject jsonObject=null; 
    try { 
     jsonObject = new JSONObject(json);//json is the response you get from server 
     users = jsonObject.getJSONArray(JSON_ARRAY);//JSON_ARRAY is the name of your array 

     ids = new String[users.length()]; 


     for(int i=0;i<users.length();i++){ 
      JSONObject jo = users.getJSONObject(i); 
      ids[i] = jo.getString("ID"); 

     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

更多refrences:

https://www.simplifiedcoding.net/android-volley-tutorial-to-get-json-from-server/ https://www.simplifiedcoding.net/android-volley-post-request-tutorial/

感谢.... Happie编码

+0

谢谢你兄弟,我真的很感激你。有没有办法从jsonArrayRequest传递数据? –

+0

我没有得到你 – Androidss

+0

你见过我的代码吗,我做了JsonArrayRequest而不是StringRequest。所以我问你,我不能从JsonArrayRequest发送id的值。 –