2015-12-02 83 views
1

你好我想字符串值数组在PHP发送到PHP服务器和PHP解码,并将其储存在Android发送阵列和接收在PHP服务器变量使用凌空

这是我在机器人工作室

代码
private void getEventDetailRespond(RequestQueue requestQueue) { 
     JSONObject params = new JSONObject(); 
     try { 
      for (int i=0; i <eventIDBeacon.size();i++){ 
       params.put(Config.EVENT_ID, eventIDBeacon.get(i)); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     //Creating a JSONObject request 
     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,Config.DATA_URL,params.toString(), 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject respond) { 
          try { 
           Toast.makeText(Beacon_MainActivity.this,"eventDetail respond "+respond.toString(),Toast.LENGTH_LONG).show(); 
           eventArray = new JSONArray(); 
           eventDetail = new ArrayList<>(); 
           eventArray = respond.getJSONArray("result"); 
           eventDetail = getEventDetail(eventArray); 

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

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
          Toast.makeText(Beacon_MainActivity.this, "Unable to fetch data event Detail: " +error.getMessage(),Toast.LENGTH_LONG).show(); 
         } 
        } 
       ); 

     //Adding request to the queue 
     requestQueue.add(jsonObjectRequest); 

    } 

    private ArrayList getEventDetail(JSONArray j) { 
     ArrayList event = new ArrayList(); 
     //Traversing through all the items in the json array 
     for (int i = 0; i < j.length(); i++) { 
      try { 
       //Getting json object 
       JSONObject json = j.getJSONObject(i); 

       //Adding the name of the event to array list 
       event.add(json.getString(Config.EVENT_TITLE)); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

     if (event.isEmpty()) eventView.setVisibility(View.INVISIBLE); 
     else { 
      if (beacons.size()!=0) { 
       checkIn.setVisibility(View.VISIBLE); 
       eventView.setVisibility(View.VISIBLE); 

       spinner.setAdapter(new ArrayAdapter<String>(Beacon_MainActivity.this, android.R.layout.simple_spinner_dropdown_item, event)); 
      }else { 
       checkIn.setVisibility(View.INVISIBLE); 
       eventView.setVisibility(View.INVISIBLE); 
      } 

     } 
     return event; 
    } 

而且从PHP大小收到,这是我的代码

<?php 

if($_SERVER['REQUEST_METHOD']=='POST'){ 

// decoding the json array 
$post = json_decode(file_get_contents("php://input"), true); 


$eventID = $post['EventID']; 



require_once('dbconnect.php'); 

$sql = "SELECT EventID, EventTitle, EventDesc, EventTime FROM Event WHERE EVENTID = '$eventID'"; 

$res = mysqli_query($con,$sql); 

$result = array(); 


while ($row = mysqli_fetch_array($res)){ 
     array_push($result,array(
      'EventID'=>$row['EventID'], 
      'EventTitle'=>$row['EventTitle'], 
      'EventDesc'=>$row['EventDesc'], 
      'EventTime'=>$row['EventTime'] 
     )); 
    } 

     header('Content-Type: application/json'); 
    echo json_encode(array('result'=>$result), 256); 

    mysqli_close($con); 


} 

它似乎没有工作,因为我无法发送和数组到PHP服务器,它PHP服务器上进行解码。任何帮助非常感谢。

回答

0

你必须重写你的getEventDetailRespond方法

@Override 
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError { 
JSONObject params = new JSONObject(); 
    try { 
     for (int i=0; i <eventIDBeacon.size();i++){ 
      params.put(Config.EVENT_ID, eventIDBeacon.get(i)); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
return params; 
}; 

这是发送邮件使用凌空库.. PARAMS你的情况的方式内凌空的getParams方法,你必须创建这样的:

Map<String, ArrayList<>> params = new   
     HashMap<String,ArrayList<>>(); 

其中数组列表是您想要的列表

+0

感谢了很多,但如何

后解码PHP服务器上并存储该值到PHP数组? –

+0

是否要将“$ post”变量存储到PhP数组中? – tsiro

+0

是的我的目标是发送ArrayList(eventBeacon)到PhP服务器并存储到本地PhP变量中。我仍然不知道如何发送和接收和数组(1变量可以) –

1

首先在ArrayList中的对象中:创建JSONObjectmethod名称作为getJSONObject,这样

public class EstimateObject { 
String id, name, qty, price, total; 
public EstimateObject(String id, String name, String qty, String price, String total, int position) 
{ 
    this.id = id; 
    this.name = name; 
    this.qty = qty; 
    this.price = price; 
    this.total =total; 
    this.position = position; 
} 
public JSONObject getJSONObject() { 
    JSONObject obj = new JSONObject(); 
    try { 
     obj.put("Id", id); 
     obj.put("Name", name); 
     obj.put("Qty",qty); 
     obj.put("Price", price); 
     obj.put("Total", total); 
    } 
    catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return obj; 
} 

Aftrer这是我如何转换它,在我的活动

JSONObject JSONestimate = new JSONObject(); 
    JSONArray myarray = new JSONArray(); 

    for (int i = 0; i < items.size(); i++) { 

     try { 
      JSONestimate.put("data:" + String.valueOf(i + 1), items.get(i).getJSONObject()); 
      myarray.put(items.get(i).getJSONObject()); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    Log.d("JSONobject: ", JSONestimate.toString()); 
    Log.d("JSONArray : ", myarray.toString()); 

在这里,我既转换型的JSONObject和JSONArray。在

map.put("jsonarray",myarray.toString()); 

自PHP

$json = $_POST['jsonarray']; 
$json_array = json_decode($json,true);