gpt4 book ai didi

java - 通过 json org.json.JSONException : No value for user 获取信息时出现问题

转载 作者:行者123 更新时间:2023-11-29 16:00:10 25 4
gpt4 key购买 nike

我遇到了以下问题:注册期间。应用程序将数据发送到服务器、发送到适当的表,但需要确认注册。我每次都会收到这个错误

有人能告诉我为什么会发生这种情况吗?=(

D/Volley: [83] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] http://sample-tech.000webhostapp.com/Test/verification.php 0x7233d495 NORMAL 2> [lifetime=4050], [size=241], [rc=200], [retryCount=0]
D/EmailVerify: Verification Response: {"tag":"verify_code","error":false,"message":"Verify successful!","app_users_tb":{"id_users":"5ce4d1d2631456.69823541","f_name_users":"Adm","email_users":"sample@live.com","verified_users":"1","created_at_users":"2019-05-22 04:36:34"}}


W/System.err: org.json.JSONException: No value for user
W/System.err: at org.json.JSONObject.get(JSONObject.java:355)
W/System.err: at org.json.JSONObject.getJSONObject(JSONObject.java:574)
W/System.err: at tech.4pts.entry.EmailVerify$4.onResponse(EmailVerify.java:127)
W/System.err: at tech.4pts.entry.EmailVerify$4.onResponse(EmailVerify.java:117)
W/System.err: at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:78)
W/System.err: at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
W/System.err: at android.os.Handler.handleCallback(Handler.java:733)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:136)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5017)
W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
W/System.err: at dalvik.system.NativeStart.main(Native Method)

以下是导入应用程序条目的表的结构。

DROP TABLE IF EXISTS `app_users_tb`;
CREATE TABLE IF NOT EXISTS `app_users_tb` (
`id_users` varchar(23) NOT NULL,
`f_name_users` varchar(20) NOT NULL,
`s_name_users` varchar(20) NULL,
`b_day_users` date DEFAULT NULL,
`gender_of_users` varchar(3) DEFAULT NULL,
`email_users` varchar(30) NOT NULL,
`phone_users` int(20) DEFAULT NULL,
`zip_code_users` int(10) DEFAULT NULL,
`country_of_users` varchar(20) DEFAULT NULL,
`city_of_users` varchar(30) DEFAULT NULL,
`encrypted_password_users` varchar(250) NOT NULL,
`otp_users` int(6) NOT NULL,
`verified_users` int(1) NOT NULL DEFAULT '0',
`created_at_users` datetime DEFAULT NULL,
PRIMARY KEY (`id_users`),
UNIQUE KEY `email_users` (`email_users`),
UNIQUE KEY `phone_users` (`phone_users`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我认为这是由于确定副渔获物中的数据类型时出现错误所致。检查了java代码和sqlb一切正常,在数据库中创建了tomuzhe记录,这意味着数据类型和php没有问题,那么我的错误是什么? (

private static final String KEY_ID_USERS = "id_users";  
private static final String KEY_F_NAME_USERS = "f_name_users";
private static final String KEY_S_NAME_USERS = "s_name_users";
private static final String KEY_B_DAY_USERS = "b_day_users";
private static final String KEY_GENDER_OF_USERS = "gender_of_users";
private static final String KEY_EMAIL_USERS = "email_users";
private static final String KEY_PHONE_USERS = "phone_users";
private static final String KEY_ZIP_CODE_USERS = "zip_code_users";
private static final String KEY_COUNTRY_OF_USERS = "country_of_users";
private static final String KEY_CITY_OF_USERS = "city_of_users";
private static final String KEY_CREATED_AT_USERS = "created_at_users";

public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
private static final String CREATE_TABLE_USERS = "CREATE TABLE " + TABLE_USERS + "(" // Table Create Statements
+ KEY_ID_USERS + " TEXT PRIMARY KEY,"
+ KEY_F_NAME_USERS + " TEXT,"
+ KEY_S_NAME_USERS + " TEXT,"
+ KEY_B_DAY_USERS + " TEXT,"
+ KEY_GENDER_OF_USERS + " TEXT,"
+ KEY_EMAIL_USERS + " TEXT UNIQUE,"
+ KEY_PHONE_USERS + " INTEGER UNIQUE,"
+ KEY_ZIP_CODE_USERS + " INTEGER,"
+ KEY_COUNTRY_OF_USERS + " TEXT,"
+ KEY_CITY_OF_USERS + " TEXT,"
+ KEY_CREATED_AT_USERS + " TEXT" + ")";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_USERS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
onCreate(db);
}

public void addUser(String id_users, String f_name_users, String email_users, String created_at_users) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID_USERS, id_users); // uid
values.put(KEY_F_NAME_USERS, f_name_users);
values.put(KEY_EMAIL_USERS, email_users);
values.put(KEY_CREATED_AT_USERS, created_at_users);
db.insert(TABLE_USERS, null, values);
db.close();
}

PHP脚本,输入验证码时,看起来验证的用户= 1,甚至一半出现错误«W/System.err: org.json.JSONException: No value for user

        $user = $stmt->fetch();
if ($otp_users_ok == true) {
$response["error"] = false;
$response["message"] = "Verify successful!";
$response["app_users_tb"]["id_users"] = $user["id_users"];
$response["app_users_tb"]["f_name_users"] = $user["f_name_users"];
$response["app_users_tb"]["email_users"] = $user["email_users"];
$response["app_users_tb"]["verified_users"] = $user["verified_users"];
$response["app_users_tb"]["created_at_users"] = $user["created_at_users"];
die(json_encode($response));
} else {
$response["error"] = true;
$response["message"] = "Invalid Credentials!";
die(json_encode($response));
}
}

Java验证流程代码

private void verifyCode(final String email_users, final String otp_users) {
String tag_string_req = "req_verify_code";// Tag used to cancel the request
pDialog.setMessage("Checking in ...");
showDialog();
StringRequest strReq = new StringRequest(Request.Method.POST,
Functions.OTP_VERIFY_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Verification Response: " + response);
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
// Check for error node in json
if (!error) {
JSONObject json_user = jObj.getJSONObject("user");
Functions logout = new Functions();
logout.logoutUser(getApplicationContext());
db.addUser(json_user.getString(KEY_ID_USERS),
json_user.getString(KEY_F_NAME_USERS),
json_user.getString(KEY_EMAIL_USERS),
json_user.getString(KEY_CREATED_AT_USERS));
session.setLogin(true);
Intent upanel = new Intent(EmailVerify.this, HomeActivity.class);
upanel.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(upanel);
finish();
} else {
Toast.makeText(getApplicationContext(), " Wrong verification Code", Toast.LENGTH_LONG).show();
textVerifyCode.setError("Wrong verification Code");
}
} catch (JSONException e) {
e.printStackTrace(); //!!!!!
Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Verify Code Error: " + error.getMessage());
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> paramsUsers = new HashMap<>();
paramsUsers.put("tag", "verify_code");
paramsUsers.put("email_users", email_users);
paramsUsers.put("otp_users", otp_users);
return paramsUsers;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type","application/x-www-form-urlencoded");
return params;
}
}; MyApplication.getInstance().addToRequestQueue(strReq, tag_string_req);
}

最佳答案

您正在调用一个不存在的 json 对象“user”,这应该是“app_users_tb”

if (!error) {
JSONObject json_user = jObj.getJSONObject("app_users_tb");
Functions logout = new Functions();
.......................
finish();
} else {
-------------
}

关于java - 通过 json org.json.JSONException : No value for user 获取信息时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56250236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com