【发布时间】:2019-07-06 15:20:27
【问题描述】:
我正在尝试在我的应用程序中添加删除帐户选项,但是当我尝试删除帐户时,我没有从 Web 服务器获得响应。
相反,我得到了错误:
org.json.JSONException: End of input at character 0 of
我尝试将请求方法更改为 DELETE,但是我对 android 和数据库不太熟悉,所以我不确定这是否可行。 我不确定问题出在 php 还是 java 代码上,当我在 android studio 中运行调试器时,String 响应返回:
response: ""
php:
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$id = $_POST['id'];
require 'conn.php';
$sql = "DELETE * FROM Patients WHERE patientID='$id'";
if(mysqli_query($conn, $sql)){
$result['success'] = "1";
$result['message'] = "success";
echo json_encode($result);
mysqli_close($conn);
} else {
$result["success"] = "0";
$result["message"] = "Error!";
echo json_encode($result);
mysqli_close($conn);
}
}
?>
Java删除方法:
private void deleteAccount() {
final String name = this.name.getText().toString().trim();
final String lName = this.lName.getText().toString().trim();
final String dob = this.dob.getText().toString().trim();
final String email = this.email.getText().toString().trim();
final String password = this.password.getText().toString().trim();
final String passwordConf = this.cPassword.getText().toString().trim();
final String id = getID;
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_DELETE,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
String success = jsonObject.getString("success");
if(success.equals("1")){
Toast.makeText(EditAccount.this, "Account Deleted", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
Toast.makeText(EditAccount.this, "Error: "+e.toString(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(EditAccount.this, "Error: "+error.toString(), Toast.LENGTH_SHORT).show();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("id", id);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
我希望 toast 会弹出并说帐户已删除,但我却收到顶部说明的错误消息。
附言这只是一个原型,所以我暂时不担心安全性。
谢谢!
【问题讨论】:
-
您没有在 PHP 代码中定义
$result = array(),这很可能导致通知文本无效 json.. -
我已经添加了 $result = array();到我的代码,但恐怕没有运气,谢谢!
-
现在运行调试器,响应字符串现在返回:"{"success":"0","message":"Error!"}"