2016-01-27 2 views
0

Я немного запутался, так как я задал вопрос, связанный с декодированием JSON на стороне PHP. Я сосредотачиваюсь там на расшифровке JSONobject POSTED из Android Volley, используя stringrequest. Я смог создать хороший код, касающийся вставки данных в MySql, и я забыл, что у меня все еще плохая конфигурация на стороне клиента. Теперь я получаю «E/Volley: [215] BasicNetwork.performRequest: Неожиданный код ответа 500« Я отправлю свой код здесь как на стороне Android, так и на PHP. Пожалуйста, направляйте меня соответственно. Действительно устал здесь. Надеюсь, кто-нибудь мне поможет.Android JSONObject Сообщение Volley с помощью StringRequest

КЛИЕНТ СТОРОНА:

public void testOrder (ArrayList<String> order_id, 
             ArrayList<String> uname, 
             ArrayList<String> prod_name, 
             ArrayList<String> prod_id, 
             ArrayList<String> quantity, 
             ArrayList<String> branches, 
             ArrayList<String> totalPrice, 
             int itemIteration){ 

     JSONObject obj = null; 
     JSONArray jsonArray = new JSONArray(); 
     final JSONObject finalobject = new JSONObject(); 
     for (int i = 0; i < itemIteration; i++) { 
      obj = new JSONObject(); 
      Log.d("OBJECT_COUNTER", String.valueOf(i)); 
      try { 
       obj.put("itemCount", itemIteration-1); 
       obj.put("order_id", order_id.get(i)); 
       Log.d("ORDER_ID",  order_id.get(i)); 
       obj.put("uname",  uname.get(i)); 
       Log.d("USERNAME",  uname.get(i)); 
       obj.put("prod_name", prod_name.get(i)); 
       Log.d("PROD_NAME",  prod_name.get(i)); 
       obj.put("quantity", quantity.get(i)); 
       Log.d("PROD_QUANT", quantity.get(i)); 
       obj.put("branch",  branches.get(i)); 
       Log.d("PROD_BRANCHES", branches.get(i)); 
       obj.put("totalPrice", totalPrice.get(i)); 
       Log.d("TOTAL_PRICE", totalPrice.get(i)); 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      jsonArray.put(obj); 
     } 


      try { 
       finalobject.put("ORDERLIST", jsonArray); 
       test = jsonArray.toString(); 
//    Toast.makeText(this,test,Toast.LENGTH_SHORT).show(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 


     StringRequest strRequest = new StringRequest(Request.Method.POST, Config.TRY_JSON_POST, 
       new Response.Listener<String>() 
       { 
        @Override 

        public void onResponse(String response) 
        { 
         Toast.makeText(PlaceOrder.this, response, Toast.LENGTH_SHORT).show(); 
         //Log.d("Response",response); 
// 
        } 
       }, 
       new Response.ErrorListener() 
       { 
        @Override 
        public void onErrorResponse(VolleyError error) 
        { 
         Toast.makeText(PlaceOrder.this, error.toString(), Toast.LENGTH_SHORT).show(); 
        } 
       }) 
     { 
      @Override 
      protected Map<String, String> getParams() 
      { 
       Map<String, String> params = new HashMap<>(); 
       params.put("ORDERLIST", finalobject.toString()); 

       return params; 
      } 
     }; 
     RetryPolicy policy = new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); strRequest.setRetryPolicy(policy); 
     AppController.getmInstance().addToRequesQueue(strRequest); 

    } 
} 

SERVER СТОРОНА:

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

$content = file_get_contents("php://input"); 
$response = json_decode($content, true); 
$orderlist = json_decode($response['ORDERLIST'], true); 
//$count  = count($response); 

for($x=0;$x<=count($response);$x++){ 
    foreach($orderlist AS $row){ 
    $id=$row[$x]['order_id']; 
    $uname=$row[$x]['uname']; 
    $query_parts[$x] = "("."'".$row[$x]['order_id']."'".","."'".$row[$x]['uname']."'".","."'".$row[$x]['prod_name']."'".","."'".$row[$x]['quantity']."'".","."'".$row[$x]['totalPrice']."'".")"; 
    } 
} 

$sql_1 = "INSERT INTO `order` (`order_id`, `uname`) VALUES ('$id', '$uname')"; 
$sql_2 = "INSERT INTO orders (order_id, uname, prod_name, quantity, total_price) VALUES ".implode(',', $query_parts); 

if ($con->query($sql_1) === TRUE) { 
     if ($con->query($sql_2) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error2: " . $sql_2 . "<br>" . $con->error; 
    } 
} else { 
    echo "Error1: " . $sql_1 . "<br>" . $con->error; 
} 

} else { 
     echo "FAILED JSON POST"; 
} 

Удален некоторое ЗАЯВЛЕНИЕ ПЕРВОГО предотвратить VOLLEY.ERROR

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

$content = file_get_contents("php://input"); 
//$response = json_decode($content, true); 
//$orderlist = json_decode($response['tag'], true); 
//$count  = count($response); 

$response = json_decode($content, true); 
$orderlist= $response['ORDERLIST']; 

echo $content; 

} else { 
    echo "NO POST"; 
} 

Я получаю эту кучу коды так I гостевая сторона сервера получила мой JSONObject

ORDERLIST=%7B%22ORDERLIST%22%3A%5B%7B%22itemCount%22%3A1%2C%22order_id%22%3A%226794%22%2C%22uname%22%3A%22jordan%22%2C%22prod_name%22%3A%22ABC%22%2C%22quantity%22%3A%221%22%2C%22branch%22%3A%22Dapitan%22%2C%22totalPrice%22%3A%2223500%22%7D%2C%7B%22itemCount%22%3A1%2C%22order_id%22%3A%226794%22%2C%22uname%22%3A%22jordan%22%2C%22prod_name%22%3A%22AMD+Kaveri+A4-7300+APU+HD8470D+2-Core+2GB+500GB+CPU+Package%22%2C%22quantity%22%3A%221%22%2C%22branch%22%3A%22Dapitan%22%2C%22totalPrice%22%3A%2223500%22%7D%5D%7D& 

моделируемой DB РАБОТА И ЭТО РАБОТАЕТ

$content = '{"ORDERLIST":"{\"ORDER_LIST\":[{\"order_id\":\"1756\",\"uname\":\"jordan\",\"prod_name\":\"ABC\",\"quantity\":\"1\",\"branch\":\"Dapitan\",\"totalPrice\":\"23500\"},{\"order_id\":\"1756\",\"uname\":\"jordan\",\"prod_name\":\"AMD Kaveri A4-7300 APU HD8470D 2-Core 2GB 500GB CPU Package\",\"quantity\":\"1\",\"branch\":\"Dapitan\",\"totalPrice\":\"23500\"}]}"}'; 
$con = mysqli_connect("localhost","","",""); 
$response = json_decode($content, true); 
$orderlist = json_decode($response['ORDERLIST'], true); 
//$count  = count($response); 

for($x=0;$x<=count($response);$x++){ 
    foreach($orderlist AS $row){ 
    $id=$row[$x]['order_id']; 
    $uname=$row[$x]['uname']; 
    $query_parts[$x] = "("."'".$row[$x]['order_id']."'".","."'".$row[$x]['uname']."'".","."'".$row[$x]['prod_name']."'".","."'".$row[$x]['quantity']."'".","."'".$row[$x]['totalPrice']."'".")"; 
    } 
} 



$sql_1 = "INSERT INTO `order` (`order_id`, `uname`) VALUES ('$id', '$uname')"; 
$sql_2 = "INSERT INTO orders (order_id, uname, prod_name, quantity, total_price) VALUES ".implode(',', $query_parts); 

if ($con->query($sql_1) === TRUE) { 
     if ($con->query($sql_2) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error2: " . $sql_2 . "<br>" . $con->error; 
    } 
} else { 
    echo "Error1: " . $sql_1 . "<br>" . $con->error; 
} 

ответ

0

Вы отправляете данные на key"tag" но server side вы выборки из ключевых "ORDERLIST" в $orderlist = json_decode($response['ORDERLIST'], true);. Либо в getParams удалите параметр и отправьте полный код json или с сервера на $orderlist = json_decode($response['tag'], true);

надеюсь, что это поможет.

+0

Я изменил со стороны сервера «тег», но не повезло – overdrive

+0

Вам не нужно использовать 'json_decode' несколько раз, как вы делали' $ response = json_decode ($ content, true); $ orderlist = json_decode ($ response ['ORDERLIST'], true); ', вы должны сделать вместо этого' $ response = json_decode ($ content, true); $ orderlist = $ response ['ORDERLIST']; ' –

+0

У меня есть Volley.Server.Error. – overdrive

Смежные вопросы