2016-12-07 87 views
-1

我尝试将数据放入我的数据库,但我有例外,如主题。将String转换为JSONObject可能是问题,但我不知道如何解决这个问题。Android排除异常:org.json.JSONException:值<br><java.lang.String类型的表不能转换为JSONObject

这里是我的OrderRequest

public OrderRequest(String orderNumber, String date, String adress, int phone, String email, String orderCode, int price, String time, int state, Response.Listener<String> listener){ 
     super(Method.POST, ORDER_REQUEST_URL, listener, null); 
    params = new HashMap<>(); 
    params.put("ordernumber", orderNumber); 
    params.put("data", date); 
    params.put("adress", adress); 
    params.put("phone", phone + ""); 
    params.put("email", email); 
    params.put("ordercode", orderCode); 
    params.put("price", price + ""); 
    params.put("time", time); 
    params.put("state", state + ""); 

} 
@Override 
public Map<String, String> getParams(){ 
    return params; 
} 

这是我的PHP代码:

<?php 
$con = <-here is password, etc... 


$ordernumber = $_POST["ordernumber"]; 
$date = $_POST["date"]; 
$adress = $_POST["adress"]; 
$phone = $_POST["phone"]; 
$email = $_POST["email"]; 
$ordercode = $_POST["ordercode"]; 
$price = $_POST["price"]; 
$time = $_POST["time"]; 
$state = $_POST["state"]; 


$statement = mysqli_prepare($con, "INSERT INTO order (ordernumber, date, adress, phone, email, ordercode, price, time, state) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "sssissisi", $ordernumber, $date, $adress, $phone, $email, $ordercode, $price, $time, $state); 
mysqli_stmt_execute($statement); 

$response = array(); 
$response["success"] = true; 

echo json_encode($response); 

>

这里是我的Java代码:

    Response.Listener<String> responsListener = new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          try { 
           JSONObject jsonResponse = new JSONObject(response); 
           boolean success = jsonResponse.getBoolean("success"); 

           if (success) { 
            Intent intent = new Intent(FinalizeActivity.this, LoggedActivity.class); 
            FinalizeActivity.this.startActivity(intent); 
           } else { 

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

        OrderRequest orderRequest = new OrderRequest(orderNumberO, dateO, adressO, phoneO, emailO, orderCodeO, priceO, timeO, stateO, responsListener); 
        RequestQueue queue = Volley.newRequestQueue(FinalizeActivity.this); 
        queue.add(orderRequest); 
       } 
      } 
     }); 

在其他放在我的ap我有一个类似的代码,然后它的工作。

+0

你在某处回应HTML,这是你的例外告诉你的。因为HTML不能被解析为JSON,所以你会得到一个异常 – 0xDEADC0DE

+0

它的'data' not'date'在php代码 –

+0

中寻找拼写错误,你得到一个HTML内容的响应,并且在这一行中'new JSONObject(response);'它不能转换它。首先找出你的回应,然后如果它是json格式,请将它转换为Notepad ++中的 –

回答

0

双方的UTF-8编码。

    来自编码标签并运行此代码
  • PHP代码记事本++并选择编码以UTF-8无BOM
  • PHP侧:报头( '内容类型=应用/ JSON;字符集= UTF-8');
+0

我选择utf-8不带BOM的编码选项。但是我用这个做了什么:header('Content-type = application/json; charset = utf-8');我应该把它放在php代码中? – Akida

+0

如果问题仍然存在是的,你应该放置这个PHP代码。 –

相关问题