org.json.JSONException: java.lang.String 型の値 <br は、phpserver を使用する Android Studio で JSONObject に変換できません

mc.b

私はこれを JavaCode として持っています:

private void loginUser(){
    pd = ProgressDialog.show(LoginActivity.this, "", "Loading...");
    StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if (success) {
                            launchHomeScreen();
                            pd.dismiss();
                            Toast.makeText(LoginActivity.this,"Welcome back " + username,Toast.LENGTH_LONG).show();
                        }
                        else {
                            loginButton.setBackgroundColor(0x73000000);
                            Toast.makeText(LoginActivity.this,"Try again later!",Toast.LENGTH_LONG).show();
                            pd.dismiss();
                        }
                    }
                    catch (JSONException e) {
                        loginButton.setBackgroundColor(0x73000000);
                        e.printStackTrace();
                        Toast.makeText(LoginActivity.this,e.toString(),Toast.LENGTH_LONG).show();
                        pd.dismiss();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    loginButton.setBackgroundColor(0x73000000);
                    Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG).show();
                    pd.dismiss();
                }
            }){
        @Override
        protected Map<String,String> getParams(){
            Map<String,String> params = new HashMap<>();
            params.put(KEY_USERNAME,username);
            params.put(KEY_PASSWORD,password);
            return params;
        }

    };
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

そして、私のサーバーでのphpコードとして、このコード:

<?php
$con = mysqli_connect("censored", "censored", "censored", "censored");

$username = $_POST["username"];
$password = $_POST["password"];

$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ?");
mysqli_stmt_bind_param($statement, "s", $username);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $colUserID, $colUsername, $colPassword);

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

while(mysqli_stmt_fetch($statement)){
    if (password_verify($password, $colPassword)) {
        $response["success"] = true;  
    }
}
echo json_encode($response);

?>

そして、次のエラーを取得します。

org.json.JSONException: タイプ java.lang.String の値 br は JSONObject に変換できません

私のコードの何が問題になっていますか?

このアクション中のLOGCAT:

03-29 18:26:10.069 1255-1420/? D/AudioFlinger: mixer(0xac403b40) throttle end: throttle time(10)
03-29 18:26:10.080 1255-1420/? D/AudioFlinger: mixer(0xac403b40) throttle end: throttle time(10)
03-29 18:26:10.100 2811-3922/com.fun.goD/NetworkSecurityConfig: No Network Security Config specified, using platform default
03-29 18:26:10.113 1249-1291/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
03-29 18:26:10.215 1249-1291/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
03-29 18:26:10.220 1249-1291/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
03-29 18:26:10.231 2811-2881/com.fun.goE/EGL_emulation: tid 2881: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
03-29 18:26:10.231 2811-2881/com.fun.livster W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xb20b0c60, error=EGL_BAD_MATCH
03-29 18:26:10.745 2811-2811/com.fun.goW/System.err: org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at org.json.JSON.typeMismatch(JSON.java:111)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at org.json.JSONObject.<init>(JSONObject.java:160)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at org.json.JSONObject.<init>(JSONObject.java:173)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.fun.livster.LoginActivity$1.onResponse(LoginActivity.java:120)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.fun.livster.LoginActivity$1.onResponse(LoginActivity.java:116)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at android.os.Handler.handleCallback(Handler.java:751)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at android.os.Looper.loop(Looper.java:154)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6077)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at java.lang.reflect.Method.invoke(Native Method)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
03-29 18:26:10.746 2811-2811/com.fun.goW/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
03-29 18:26:10.784 1519-1991/system_process I/ActivityManager: Killing 2018:com.android.keychain/1000 (adj 906): empty #17
03-29 18:26:10.792 1519-2000/system_process W/InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@86ca045 attribute=null, token = android.os.BinderProxy@d693449
03-29 18:26:10.821 1519-1626/system_process D/ActivityManager: cleanUpApplicationRecord -- 2018
03-29 18:26:10.828 1249-1905/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
03-29 18:26:10.831 1249-1289/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
03-29 18:26:10.834 1249-1289/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
03-29 18:26:10.843 2811-2881/com.fun.livster E/EGL_emulation: tid 2881: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
03-29 18:26:10.843 2811-2881/com.fun.livster W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xb20b0ca0, error=EGL_BAD_MATCH
03-29 18:26:10.959 1519-1540/system_process I/WindowManager: Destroying surface Surface(name=com.fun.go/com.fun.livster.LoginActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.AppWindowToken.destroySurfaces:363 com.android.server.wm.WindowStateAnimator.finishExit:565 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:491 com.android.server.wm.WindowAnimator.updateWindowsLocked:303 com.android.server.wm.WindowAnimator.animateLocked:704 
03-29 18:26:13.777 2811-2811/com.fun.livster W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
03-29 18:26:14.827 1519-1540/system_process I/WindowManager: Destroying surface Surface(name=Toast) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner:429 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop:232 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement:180 com.android.server.wm.WindowManagerService$H.handleMessage:8079 android.os.Handler.dispatchMessage:102 
03-29 18:26:20.770 1519-1991/system_process I/ActivityManager: Killing 3034:com.android.gallery3d/u0a40 (adj 906): empty #17
03-29 18:26:20.831 1519-1530/system_process D/ActivityManager: cleanUpApplicationRecord -- 3034

完全な応答は次のとおりです。

<br /> <b> Warning</b>: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in <b>/home/u3462344/public_html/login.php<b/> on line <b>11</b><br /> {"success":false}
アレックスゲラ

または、JSON の形式が間違っているか、後ろの JSON が空である場合、サーバーからの結果を表示する必要があります。

PHP コードで JSON を HTML で返します。ヘッダー タイプが必要です。このコードを追加します。

header('Content-Type: application/json');
echo json_encode($response);

最終的なコードは次のようになります。

<?php
$con = mysqli_connect("censored", "censored", "censored", "censored");

$username = $_POST["username"];
$password = $_POST["password"];

$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ?");
mysqli_stmt_bind_param($statement, "s", $username);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $colUserID, $colUsername, $colPassword);

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

while(mysqli_stmt_fetch($statement)){
    if (password_verify($password, $colPassword)) {
        $response["success"] = true;  
    }
}
header('Content-Type: application/json');
echo json_encode($response);
?>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ