【问题标题】:Android volley exception: org.json.JSONException: Value <br><table of type java.lang.String cannot be converted to JSONObjectAndroid volley 异常:org.json.JSONException: Value <br><table of type java.lang.String cannot be convert to JSONObject
【发布时间】:2016-12-07 10:53:08
【问题描述】:

我尝试将数据放入我的数据库,但我遇到了主题中的异常。可能是将 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);
                }
            }
        });

在我的应用程序的其他地方,我有一个类似的代码,然后它就可以工作了。

【问题讨论】:

  • 您在某处回显 HTML,这就是您的异常告诉您的。由于 HTML 无法解析为 JSON,因此会出现异常
  • 是data 而不是date 在php代码中寻找错别字
  • 您会收到包含 HTML 内容的响应,并且在此行中的 `new JSONObject(response);` 它无法转换它。首先找出您的响应是什么,然后如果它是 json 格式,则将其转换

标签: java android json android-volley


【解决方案1】:

双方都采用UTF-8编码。

  • PHP 代码 Notepad++ 并从编码选项卡中选择在没有 BOM 的 utf-8 中编码并运行此代码
  • PHP 端:header('Content-type=application/json; charset=utf-8');

【讨论】:

  • 在 Notepad++ 中,我选择选项 Encode in utf-8 w/o BOM。但是我应该用这个做什么: header('Content-type=application/json; charset=utf-8');我应该把它放在php代码中吗?
  • 如果问题仍然存在,是的,您应该放置此 php 代码。
【解决方案2】:

你必须有一些错误,它给出了 HTML,你可以使用邮递员应用程序轻松检查相同的请求,我们可以看到错误 Postman

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多