java如何修复尝试将用户签名到服务器主机时出现的“字符串无法转换为json对象”错误?
我正在尝试将一些用户数据(其注册安卓页面)发送到我的服务器主机,但在尝试从服务器端获取json对象时出错,因此如何解决此问题
更新::我正在使用byethost服务,我知道Cookie中有一些东西。那么,我如何使用volley库来解决这个问题呢
我的RegisterActivity类中有一个名为onResponse()的方法,它是问题的起点。在这个方法中,我写了这行代码,它总是抛出关于不将字符串转换为json对象的异常,我认为这与我的java代码无关,它不能将字符串转换为json的原因是它不是一个有效的json对象。但我不知道为什么它是无效的
这是我的登记簿。php文件 https://www.安卓tutorialpoint.com/wp-content/uploads/2016/09/register.txt https://www.安卓tutorialpoint.com/wp-content/uploads/2016/09/update_user_info.txt https://www.安卓tutorialpoint.com/wp-content/uploads/2016/09/安卓_login_connect.txt https://www.安卓tutorialpoint.com/wp-content/uploads/2016/09/安卓_login_config.txt
顺便说一句,我刚刚学习了一个教程,我对php不太了解
下面是RegisterActivity类中触发异常的方法
@Override
public void onResponse(String response) {
Toast.makeText(RegisterActivity.this, response,
Toast.LENGTH_LONG).show();
Log.d(TAG, "Register Response: " + response.toString());
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
String user =
jObj.getJSONObject("user").getString("name");
Toast.makeText(getApplicationContext(), "Hi " + user +
", You are successfully Added!",
Toast.LENGTH_SHORT).show();
// Launch login activity
Intent intent = new Intent(
RegisterActivity.this,
LoginActivity.class);
startActivity(intent);
finish();
} else {
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
我希望有一个有效的json对象将用户数据传递到我的服务器,但我已经有了一些无效的json,它会引发异常
# 1 楼答案
好吧,如果有人遵循了注册和登录页面的教程,但它在这里不起作用,有一些原因。 1) 您的php文件存在一个问题,主要是这个问题。 2) 如果将字符串转换为json对象时出现问题,请打印该字符串并查看其是否为有效的json。 3) 如果这些东西都很好,那么您可能应该检查数据库,看看是否所有东西都适合php和用户数据等等
我的问题不是这两个,因为我的服务器主机与cookies(byethost)有关,您应该添加一些头来解决问题。这是一个很好的链接 How to set custom header in Volley Request 但我只是通过使用另一台服务器主机(000host)解决了我的问题,它工作得很好。顺便说一下,如果您试图使用wamp,但它也不起作用,请使用免费主机。三天来我一直被困在这件事上。祝你好运