[英]String cannot be converted to JSONObject - Android
好了朋友們。 我使用MySQL和PHP開發了一個登錄注冊系統。 剛開始時,它運行良好,能夠注冊新帳戶,並且顯然可以登錄。 但是,在兩天內,我的Android設備出現了一些奇怪的錯誤(?!)。
這是我的PHP代碼:
<?php
$con = mysqli_connect("***", "***", "***", "***");
$email = $_POST["email"];
$password = $_POST["password"];
$name = $_POST["name"];
$age = $_POST["age"];
$location = $_POST["location"];
$statement = mysqli_prepare($con, "INSERT INTO useraccounts (email, password, name, age, location) VALUES (?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "sssis", $email, $password, $name, $age, $location);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
這是我的RegisterRequest類:
public class RegisterRequest extends StringRequest {
private static final String REGISTER_REQUESTURL = "http://docscanner.ezyro.com/Register.php";
private Map<String, String> params;
public RegisterRequest(String email, String password, String name, int age, String location, Response.Listener<String> listener){
super(Method.POST, REGISTER_REQUESTURL, listener, null);
params = new HashMap<>();
params.put("email", email);
params.put("password", password);
params.put("name", name);
params.put("age", age+ "");
params.put("location", location);
}
@Override
public Map<String, String> getParams() {
return params;
}
最后,這是我的方法:
try {
final EditText etEmail = (EditText) findViewById(R.id.emailTxt);
final EditText etPassword = (EditText) findViewById(R.id.passwordTxt);
final EditText etName = (EditText) findViewById(R.id.nameTxt);
final EditText etAge = (EditText) findViewById(R.id.ageTxt);
final EditText etLocation = (EditText) findViewById(R.id.locationTxt);
final String email = etEmail.getText().toString();
final String password = etPassword.getText().toString();
String name = etName.getText().toString();
int age = Integer.parseInt(etAge.getText().toString());
String location = etLocation.getText().toString();
if (!etEmail.equals("") && !etPassword.equals("") && !etName.equals("") && !etAge.equals("") && !etLocation.equals("")) {
if (isValidEmailAddress(email)) {
Response.Listener<String> listener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if (success) {
Intent loginIntent = new Intent(getApplicationContext(), LoginActivity.class);
loginIntent.putExtra("emailExtra", email);
loginIntent.putExtra("passwordExtra", password);
startActivity(loginIntent);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
builder.setMessage("Register failed")
.setNegativeButton("Retry", null)
.create()
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest(email, password, name, age, location, listener);
RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
queue.add(registerRequest);
} else {
Toast.makeText(getApplicationContext(),
"Email format is not valid",
Toast.LENGTH_LONG)
.show();
}
} else {
Toast.makeText(getApplicationContext(),
"All fields must be completed",
Toast.LENGTH_LONG)
.show();
}
}catch(NumberFormatException nEx){
Toast.makeText(getApplicationContext(),
"Please complete all fields in order to submit the document",
Toast.LENGTH_LONG)
.show();
}
}
我的錯誤:
W / System.err:org.json.JSONException:值
據我所知,您的php代碼存在問題。 將此添加到您的php文件(一開始)
header('Content-Type: application/json');
我看到的另一個問題是,在進行簡單的發布請求(FROM POSTMAN)時,它會返回以下數據:
<html>
<body>
<script type="text/javascript" src="/aes.js" ></script>
<script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f
<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("3c1ab4cc426e0aacb5f07f248a1799fe");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://docscanner.ezyro.com/Register.php?i=2";
</script>
<noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript>
</body>
</html>
以下顯然不是包含JSON數據的字符串。 嘗試添加指定代碼的標頭部分,如果可能的話,您應該考慮轉移到Firebase身份驗證或其他身份驗證服務,因為您正在通過HTTP連接發送非加密密碼。 您還向數據庫發送了一個未加密的密碼,這是另一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.